投入就放过 发表于 2021-2-24 19:58:47

课后作业 22动动手第一题

#include <stdio.h>

#define NUM1024

int main()
{
        char str;
        char ch;
        int count=0,i;
       
        printf("请输入一个字符串:");
        getchar();
        for(i=0;(ch=getchar())!='\n';i++)
        {
                scanf("%c",str);
                count++;
        }
       
        printf("你总共输入了%d个字符!",count);
       
        return 0;
}

为啥这样算不出长度???

永恒的蓝色梦想 发表于 2021-2-24 20:15:43

#include <stdio.h>



int main() {
    size_t count = 0;
    char ch;
    printf("请输入一个字符串:");

    for (;;) {
      switch (ch = getchar()) {
      case '\0':
      case '\n':
      case '\r'
      case EOF:
            printf("你总共输入了%d个字符!", count);
            return 0;

      default:
            count++;
      }
    }
}

quark 发表于 2021-2-24 20:23:16

scanf(“%c“,str );

投入就放过 发表于 2021-2-24 20:36:39

quark 发表于 2021-2-24 20:23
scanf(“%c“,str );

好像还是不行

jackz007 发表于 2021-2-24 20:42:54

本帖最后由 jackz007 于 2021-2-24 20:46 编辑

#include <stdio.h>

#define NUM1024

int main(void)
{
      char ch , str                                                                  ;
      int i                                                                               ;
      printf("请输入一个字符串:")                                                         ;
      for(i = 0 ; (ch = getchar()) != '\n' && i < NUM - 1 ; str = '\0') str = ch ;
      printf("%s\n" , str)                                                                ;
      printf("你总共输入了 %d 个字符!" , i)                                             ;
}

投入就放过 发表于 2021-2-24 21:01:13

jackz007 发表于 2021-2-24 20:42


我想问一下我这个是哪里错了呢

jackz007 发表于 2021-2-24 21:25:44

本帖最后由 jackz007 于 2021-2-24 21:27 编辑

投入就放过 发表于 2021-2-24 21:01
我想问一下我这个是哪里错了呢

      ch = getchar() 和 scan("%c" , str) 都会在循环中读取键盘输入,你之所以这样安排的理由(意图)是什么?你心里明白自己要干什么吗?

      只要看懂了我的代码,自然就会明白你自己代码的问题所在了。

投入就放过 发表于 2021-2-24 22:23:06

jackz007 发表于 2021-2-24 21:25
ch = getchar() 和 scan("%c" , str) 都会在循环中读取键盘输入,你之所以这样安排的理由(意图 ...

懂了,感谢
页: [1]
查看完整版本: 课后作业 22动动手第一题