用户输入被分割为while循环

时间:2017-02-22 02:11:15

标签: c

我有一个使用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;
}

1 个答案:

答案 0 :(得分:0)

您正在将“文件1”与“文件1 \ n”进行比较。将strcmp调用更改为strncmp调用,如下所示:(strncmp(fileName, "File 1", strlen("File 1")) == 0)