C言語

【C言語】文字列「\n」を改行コードに変換する関数【自作関数】

こんにちは、コン(@pippi_kon)です。

この記事では、C言語の『文字列「\n」を改行コードに変換する自作関数』をご紹介します。

作成の背景

クイズゲームを作成しており、以下のクイズ問題をプログラム内で出力していました。

printf(“大正->昭和->○○->令和\n○○に入る年号は?”);

「大正->昭和->○○->令和」と「○○に入る年号は?」を改行して出力しています。

 

このクイズ問題文をプログラム内で直接記述するのではなく、テキストファイルから読み込むように変更しました

テキストファイルにはprintf文の中身をそのまま転載しました。

大正->昭和->○○->令和\n○○に入る年号は?

テキストファイルの読み込みにはfgets関数を使用しています。

fgets関数で読み込んだ文字列をそのまま出力すると、出力結果が以下のようになりました。

大正->昭和->○○->令和\n○○に入る年号は?

「大正->昭和->○○->令和」と「○○に入る年号は?」が改行されずに出力されています

というか、『\n』が改行コードとしてではなく文字列として出力されてしまっています。

このままではダメなので、文字列の『\n』を改行コードとして認識されるように変換する関数を自作しました。

 

プログラム(自作関数)

今回作成した自作関数の内容です。

void change_kaigyou(char* s)
{
	char* p;
	char* w;

	while (1) {
		p = strstr(s, "\\n");
		if (p == NULL) {
			return;
		}
		*p = '\n';
		*p++;
		w = p;
		*w++;
		while (*p++ = *w++);
	}
}

 

「\n」が含まれている文字列が格納された変数を引数に指定することで、関数にて”\n”を改行コードに変換してくれます。

引数の内容を直接操作するので、戻り値として受け取る必要はありません。

 


最後に

今回は、C言語の『文字列「\n」を改行コードに変換する自作関数』をご紹介しました。

使いどころが限られますが、そのまま使用できなくてもちょっとは参考になるかもです。

 

以上、おつかれさまでした!

【2020年版】定番の解説本!C言語入門におすすめの参考書_サムネ
【2021年版】定番の解説本!C言語入門におすすめの参考書『C言語初心者にオススメしたいプログラミング参考書』をご紹介します。...
created by Rinker
¥2,750
(2023/05/30 11:05:26時点 Amazon調べ-詳細)

created by Rinker
¥4,702
(2023/05/30 11:05:29時点 Amazon調べ-詳細)

ABOUT ME
コン
自分のやりたいことでお金を稼げる生活に憧れて脱サラ。 アプリ開発やブログ運営をしながらのんびり暮らしています。