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