呵呵哈哈哦哦 发表于 2022-4-27 08:51:26

调试与运行结果不一致

#include<stdio.h>
#include<string.h>
int main()
{   char a={'\0'},b={'\0'};
    intcount=0;
    gets(a);
    getchar();
    gets(b);
for(int z=0;z<strlen(a);z++)
      { if(a==b) count++;
          else break; }
if( count==strlen(a)&&b==' ')
            printf("Yes");
}
这个代码是想判断第一次输入的单词和第二次输入的一句话中的首个单词是否一致 一致输出Yes
调试与运行的结果不一致 想让大佬们帮我看看哪不对
you
you are
调试可以出来yes运行出不来

isdkz 发表于 2022-4-27 09:00:44

#include<stdio.h>
#include<string.h>
int main()
{   char a={'\0'},b={'\0'};
    intcount=0;
    gets(a);
    gets(b);
for(int z=0;z<strlen(a);z++)
      { if(a==b) count++;
            else break; }
if( count==strlen(a) )
            printf("Yes");
}

风车呼呼呼 发表于 2022-4-27 11:12:56

gets()不会在缓冲区留下换行符,把getchar()去掉就行
你的输入过程实际上是
1.You被a获取
2.然后getchar(),You are,其中第一个字符Y被getchar()取走
3.剩下的ou are被b获取

你可以现在这样,在gets(b)后面打印一下b的内容看一下

呵呵哈哈哦哦 发表于 2022-4-27 12:25:12

风车呼呼呼 发表于 2022-4-27 11:12
gets()不会在缓冲区留下换行符,把getchar()去掉就行
你的输入过程实际上是
1.You被a获取


谢谢 谢谢 懂了懂了
页: [1]
查看完整版本: 调试与运行结果不一致