投入就放过 发表于 2022-2-10 18:14:26

c语言 第19课 动动手第一题 实现strncmp函数的功能

#include <stdio.h>

intmain()
{
        char a={};
        char b={};
        int ch,i,num;
       
        printf("请输入第一个字符串:");
       
        for(i=0;a='\n';i++)
        {
                a=getchar();               //为什么不能这么写呢,我输入asd再按回车,字符串应该"a" "s" "d" "\n",在for循环中第一次判断的条件是a(我试了一下系统a打印出来等于0),第二次a='a',第三次a='s',第四次a='d',第五次a='\n',第五次的时候不是不满足for循环的条件了吗,为什么我一直按回车都是没反应呢?
        }
       
        printf("请输入第二个字符串:");
       
        ch=0;
        for(i=0;ch!='\n';i++)
        {
                ch=getchar();
                b=ch;
        }
       
        printf("请输入比较的字符个数:");
        scanf("%d",&num);
       
        i=0;       
        while(i<num)
        {
                if(a!=b)
                {
                        break;
                }
                i++;
        }
       
        printf("比较的结果是:%d\n",a-b);
       
        return 0;
}

ckblt 发表于 2022-2-10 18:19:12

还是老问题
for(i=0;a!='\n';i++)

人造人 发表于 2022-2-10 18:22:51

学编程这么不认真?

投入就放过 发表于 2022-2-10 21:09:05

ckblt 发表于 2022-2-10 18:19
还是老问题

我改过来了,还是按回车没反应

投入就放过 发表于 2022-2-10 21:09:39

人造人 发表于 2022-2-10 18:22
学编程这么不认真?

用另一种思路不小心多删了个!

ckblt 发表于 2022-2-10 21:22:12

投入就放过 发表于 2022-2-10 21:09
我改过来了,还是按回车没反应

试试for(i=0;a!='\n';i++)

投入就放过 发表于 2022-2-10 21:29:03

ckblt 发表于 2022-2-10 21:22
试试

可以了为什么-1就行了呢{:10_291:}

ckblt 发表于 2022-2-10 21:54:29

先判断,再执行

如果是 a!='\n' 的话,
那每一次判断的结果都是false,因为a总是'\0'。

投入就放过 发表于 2022-2-10 22:22:53

ckblt 发表于 2022-2-10 21:54
先判断,再执行

如果是 a!='\n' 的话,


感谢感谢!
页: [1]
查看完整版本: c语言 第19课 动动手第一题 实现strncmp函数的功能