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