永远不会秃 发表于 2020-3-25 22:59:03

关于输入字符串

#include<stdio.h>
int main()
{
        char ch;
        int i=0;
        printf("请输入一行字符\n");
        while((ch=getchar())!='\n'&&(ch=getchar())!='\0')
        i++;
        printf("你一共输入了%d个字符\n\n\n\n\n",i);
        return 0;
}

我原本的意图是计算里面有多少个有意义的字符的,可是不知道为什么就是算不出来

gby 发表于 2020-3-25 23:11:06

getchar()就是获取一个字符的,你可以看看把 chprintf出来

人造人 发表于 2020-3-25 23:11:16

#include<stdio.h>
int main()
{
      char ch;
      int i=0;
      printf("请输入一行字符\n");
      while((ch=getchar())!='\n'&&ch!='\0')
      i++;
      printf("你一共输入了%d个字符\n\n\n\n\n",i);
      return 0;
}

gby 发表于 2020-3-25 23:12:24

C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。

gby 发表于 2020-3-25 23:15:10

打脸了兄弟....怎么删帖啊

gby 发表于 2020-3-25 23:16:07

是我的错,我没看清循环,hhhh

chxchxkkk 发表于 2020-3-25 23:32:39

在你的基础上修改了一下,供参考
#include<stdio.h>
int main()
{
    char ch;
    int i=0;
    printf("请输入一行字符\n");
    while(1)
    {
      ch = getchar();
      i++;
      if (ch == '\n' || ch == EOF)
      {
            break;
      }
    }
    printf("你一共输入了%d个字符\n\n\n\n\n",i-1);
    return 0;
}

lovely539351 发表于 2020-3-25 23:42:38

3楼发了代码,我说下原因为什么计算不出来,(ch=getchar())!='\0')不是对第一个ch判断而是把第一个ch后面一个字符读取就导致这个循环判断是需要读取两个字符
而3楼发的((ch=getchar())!='\n'&&ch!='\0')循环判断中&&前的会先判断一次,只读取一个字符这时ch是有值的可以继续判断两个都成立才计数

永远不会秃 发表于 2020-3-26 09:30:21

chxchxkkk 发表于 2020-3-25 23:32
在你的基础上修改了一下,供参考

这个break是啥意思

永远不会秃 发表于 2020-3-26 10:07:57

lovely539351 发表于 2020-3-25 23:42
3楼发了代码,我说下原因为什么计算不出来,(ch=getchar())!='\0')不是对第一个ch判断而是把第一个ch后面 ...

为什么这个代码显示debug了
运行不出来

chxchxkkk 发表于 2020-3-27 09:42:15

永远不会秃 发表于 2020-3-26 09:30
这个break是啥意思

break就是跳出当前循环的意思。
页: [1]
查看完整版本: 关于输入字符串