У меня есть программа, которая получает пользовательский ввод с использованием 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()' в неинициализированной переменной - это неопределенное поведение. Также может быть полезно добавить '\ n' в' printf (filename) '. – John3136
вы, вероятно, захотите сделать 'do {...} while (ValidateFileName (имя_файла)! = 0);' – bruceg
@ John3136, в нем есть '' \ n'' из-за его происхождения ('fgets' обычно вставляет это). Это может быть проблемой. – Sebivor