Strcmp返回值不正确?

时间:2015-04-09 02:47:19

标签: c strcmp

这让我发疯了,我在主要功能的测试程序中以类似的方式完成了几项测试,一切都按预期工作,但在我写的测验程序中比较这些答案时,我总是收到即使字符串看起来相等,返回值为-1!

void TraverseList(LinkedList *inList)
{
    int compareTest;
    char userAnswer[64];
    char string1[64];
    char string2[64];

    for (inList->curr = inList-> head; inList->curr != NULL; inList->curr = inList->curr->next)
    {
        printf("%s", inList->curr->stringQuestion);
        scanf("%s", userAnswer);

        strcpy(string1, userAnswer);
        strcpy(string2, inList->curr->stringAnswer);

        compareTest = strcmp(string1, string2);

        printf("%s\n", string1);
        printf("%s\n", string2);
        printf("Return value of strcmp: %d\n", compareTest);


        if(compareTest == 0)
        {
            printf("Correct!\n");
        }
        else
        {
            printf("Incorrect!\n");
        }
    }
    printf("\n");
}

现在输出示例:

How many hours are in a day? 24
24 // this is string1
24 // this is string2

Return value of strcmp: -1
Incorrect!

1 个答案:

答案 0 :(得分:0)

如果您担心在使用字符串时没有获得正确的结果,那么在变量的打印输出周围放置一些识别标记是个好习惯。

printf("X%sX\n", variable);

这将显示计算机真正在测试的内容。

此外,如果您发现这对您不起作用,您可以尝试使用ascii值打印字符串中的各个字符,以防有隐藏的字符,如' \ a&#39 ;

for(x=0; x<strlen(string_variable); x++)
    printf("'%c' = %d\n", string_variable[x], string_variable[x]);