ユーザー入力がfgets
を使用するプログラムがありますが、入力にスペースがあると不安定に見えます。私はスペースを入れずに、動作しているようです比較するとループ中にユーザー入力が分割される
だから私入力ファイル1と、その後は、エンターキーを押したときに、これは出力
`FilePlease enter your file Name`
`1Please enter your file Name`
です。
int MAX_NAME_SZ = 256;
char * fileName = malloc (MAX_NAME_SZ);
while (ValidateFileName(fileName) != 0)
{
printf("Please enter your file Name\n");
fgets (fileName, MAX_NAME_SZ, stdin);
}
int ValidateFileName(char * fileName)
{
printf(fileName);
if ((strcmp(fileName, "File 1") == 0) || (strcmp(fileName, "File 2") == 0) ||
(strcmp(fileName, "File 3") == 0) || (strcmp(fileName, "File 4") == 0) ||
(strcmp(fileName, "File 5") == 0))
return 0;
else
return 1;
}
初期化されていない変数に対して 'ValidateFilename()'を呼び出すことは未定義の動作です。また、 'printf(filename)'に '\ n'を追加すると便利です。 – John3136
(ValidateFileName(fileName)!= 0); ' – bruceg
@ John3136の中には、その起源のために' '\ n ''があります(' fgets'は通常、 )。これは問題となる可能性があります。 – Sebivor