C言語によるscanf関数でのキーボード入力は、入力されるバイト数の上限が制限できないため、fgets関数を使う。ただ、fgets関数を使うと改行コードまで読み込まれてしまうため、必要に応じて、改行コードを削除する作業が必要になる。
プログラム
#include <stdio.h>
#define MAX 5
int main()
{
char buf[MAX+1];
puts("max 5 chars");
printf("? ");
fgets(buf, MAX+1, stdin);
sscanf(buf, "%s\n", buf); // 改行を削除
printf("buf = |%s|\n", buf);
return 0;
}


コメント