strcmp总是返回1

时间:2014-03-03 22:03:51

标签: c strcmp

以下代码中使用的变量“id”是一个全局变量,它来自一个单独的函数。它被声明并用作字符串。 check变量是一个整数。

    do{

    printf("\n\n\n\n\n\n\t\tEnter the id of the account you want to transfer to: ");
    fflush(stdin);
    scanf("%s",&account_id);
    check=strcmp(id,account_id);

    printf("%d",check);//This is just a temporary check to see what strcmp is returning

    if(check<0)
    {
        printf("\n\t\tYou cannot transfer to you own account!\n");
    }

标题中存在问题。无论我输入什么值,检查总是1。如果我以相反的顺序比较变量(即strcmp(account_id,id);),它确实会变为-1。

提前谢谢

1 个答案:

答案 0 :(得分:1)

虽然您没有向我们展示idaccount_id的值,但我希望您的问题是隐藏的换行符。

我在猜测:

id = "12345";
account_id = "12345\n";

\ n \ n来自您点击输入的时间!

您可以在调试器中检查,或者甚至使用printf:

printf("Lengths are: %d and %d\n", strlen(id), strlen(account_id));

因此,他们不能比较平等。