aufgeteilt Ich habe ein Programm, das Benutzereingabe mit fgets
erhält, aber wenn der Eingang Leerzeichen hat, scheint es unberechenbar zu sein.Benutzereingabe ist für While-Schleife
Also, wenn ich Eingabedatei 1 und dann die Enter-Taste drücken, dann ist dies der Ausgang
`FilePlease enter your file Name`
`1Please enter your file Name`
Wenn ich ohne Leerzeichen vergleichen, es scheint zu funktionieren.
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;
}
Aufruf von 'ValidateFilename()' auf einer nicht initialisierten Variable ist undefiniertes Verhalten. Auch das Hinzufügen von '\ n' zum' printf (filename) 'könnte nützlich sein. – John3136
Sie wahrscheinlich tun möchten "do {...} while (ValidateFileName (fileName)! = 0);' – bruceg
@ John3136, es gibt ein ''\ n'' in diesem wegen seiner Herkunft (' fgets' typischerweise fügt das ein). Dies könnte ein Problem sein. – Sebivor