入力文字列が事前定義された制限を超えると、fgets で少し問題が発生します。
以下に例を示します。
for(index = 0; index < max; index++)
{printf(" Enter the %d string : ",index+1)
if(fgets(input,MAXLEN,stdin))
{
printf(" The string and size of the string is %s and %d \n",input,strlen(input) + 1);
removeNewLine(input);
if(strcmp(input,"end") != 0)
{ //Do something with input
}
}
長さ MAXLEN を超えて文字列を入力すると、入力が MAXLEN -1 に '\0' を追加することがわかります。要求されていない 2 番目の文字列を入力しようとすると、問題が発生します。
Output :
Enter the first string : Aaaaaaaaaaaaaaaaaaaa //Exceeds limit
Enter the second string : Enter the third string : ....Waits input
だから、Cのように標準的な方法でバッファをクリアする必要があると思いました。入力するまで待機します
return
2回、最初は文字列に追加され、次回は別の戻り値でより多くの入力が期待されます。1.余分なリターンを入力せずにバッファをクリアできる方法はありますか? 2. 同じエラー処理を実装するにはどうすればよいですか? fgets の戻り値は非 null になり、strlen(input) は fgets によって受け入れられる文字列のサイズを教えてくれるので、どうすればよいでしょうか?
どうもありがとう