こんにちは、コン(@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」を改行コードに変換する自作関数』をご紹介しました。
使いどころが限られますが、そのまま使用できなくてもちょっとは参考になるかもです。
以上、おつかれさまでした!
(2025/11/13 07:47:50時点 Amazon調べ-詳細)
(2025/11/13 07:47:51時点 Amazon調べ-詳細)



