C,if语句和strcmp

时间:2015-06-29 20:22:03

标签: c if-statement strcmp

我不明白为什么它不接受输入。它始终显示“输入无效”...帮助!

InvalidCsrfTokenException: Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.

2 个答案:

答案 0 :(得分:4)

因为fgets()存储的值包含尾随'\n'

试试这个

int stop = 0;
while (stop == 0)
{
    fgets(input, MAX, stdin);
    printf("%s", input);

    if (strcmp(input, "1\n") == 0)
        add();
    else if (strcmp(input, "2\n") == 0)
        delete();
    else if (strcmp(input, "3\n") == 0)
        view();
    else if (strcmp(input, "4\n") == 0)
        stop = 1;
    else
        printf("Invalid Input!\n");
}

有效吗?

因此您需要将其从input中删除或添加到比较字符串中。

答案 1 :(得分:2)

除了@iharob所说的,我建议使用strncmp来检查你的输入。该功能允许您明确指定要比较的字符数。有关函数定义,请参阅here

int stop = 0;
while (stop == 0)
{
    fgets(input, MAX, stdin);
    printf("%s", input);

    if (strncmp(input, "1", 1) == 0)
        add();
    else if (strncmp(input, "2", 1) == 0)
        delete();
    else if (strncmp(input, "3", 1) == 0)
        view();
    else if (strncmp(input, "4", 1) == 0)
        stop = 1;
    else
        printf("Invalid Input!\n");
}