阿亮不减肥 发表于 2022-9-9 15:45:47

习题:指针和数组,获取字符串长度

#include <stdio.h>
#define MAX 1024

int main() {
        char str;
        int i, count = 0;
        printf("请输入一个字符串:");
        fgets(str, MAX, stdin);
        for (i = 0; i < MAX; i++);//for循环这里感觉没啥问题,但是不管输出几个字符,结构都是1;其次吧while语句,改为if(str == '\n'){break;}会报错;
        {
                while (str == '\n') {
                        break;
                }
                count = count + 1;
        }
        printf("你总共输入了%d个字符!\n", count);
        return 0;
}

jackz007 发表于 2022-9-9 15:58:12

本帖最后由 jackz007 于 2022-9-9 16:00 编辑

#include <stdio.h>

#define MAX 1024

int main(void)
{
      char str                                 ;
      int count                                       ;
      printf("请输入一个字符串:")                  ;
      fgets(str , MAX , stdin)                        ;
      for(count = 0 ; str != '\n' ; count ++);
      printf("你总共输入了 %d 个字符!\n", count)   ;
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
请输入一个字符串:I love FishC !
你总共输入了 14 个字符!

D:\\C>

阿亮不减肥 发表于 2022-9-9 16:06:45

jackz007 发表于 2022-9-9 15:58
编译、运行实况:

大佬,我感觉我的那个也没啥问题啊,为啥输出的字符数一直是1

jackz007 发表于 2022-9-9 16:13:31

阿亮不减肥 发表于 2022-9-9 16:06
大佬,我感觉我的那个也没啥问题啊,为啥输出的字符数一直是1

#include <stdio.h>

#define MAX 1024

int main()
{
      char str                ;
      int i , count = 0            ;
      printf("请输入一个字符串:") ;
      fgets(str, MAX, stdin)       ;
      for (i = 0 ; i < MAX ; i ++) ;//这是一个什么都不做的空循环,循环结束的时候,i = MAX
      {
                while (str == '\n') { // 当 str == '\n' 的时候进行循环???
                        break;         // 在循环体内 break???你到底想干什么???
                }
                count = count + 1    ;   // 这条语句只执行一次,所以,count 自然 = 1
      }
      printf("你总共输入了%d个字符!\n", count);
      return 0;
}

人造人 发表于 2022-9-9 16:14:22

阿亮不减肥 发表于 2022-9-9 16:06
大佬,我感觉我的那个也没啥问题啊,为啥输出的字符数一直是1

认真一点么
         for (i = 0; i < MAX; i++);    //for循环这里感觉没啥问题,但是不管输出几个字符,结构都是1;其次吧while语句,改为if(str == '\n'){break;}会报错;

阿亮不减肥 发表于 2022-9-9 16:19:19

jackz007 发表于 2022-9-9 16:13


明白错在哪里了;for循环哪里打了个;直接循环结束了;把while改成if就没问题了;break跳出循环,是跳出while循环的,当时脑子热了把while当初条件判断来用了;

阿亮不减肥 发表于 2022-9-9 16:20:39

人造人 发表于 2022-9-9 16:14
认真一点么
         for (i = 0; i < MAX; i++);    //for循环这里感觉没啥问题,但是不管输出几个字 ...

确实刚发现多打了一个分号;练习的时候{:9_227:}
页: [1]
查看完整版本: 习题:指针和数组,获取字符串长度