minamikotori 发表于 2020-12-20 10:48:51

指针初步

本帖最后由 minamikotori 于 2020-12-20 10:50 编辑

#include <stdio.h>

#define MAX 1024

int main()
{
      char str;
      char *target = str;
      int length = 0;

      printf("请输入一个字符串:");
      fgets(str, MAX, stdin);

      while (*target++ != '\0')
      {
                length++;
      }

      printf("您总共输入了 %d 个字符!\n", length - 1);

      return 0;
}

这段代码在不输入任何字符的时候,是怎么进行比较的

*target 是‘\0’吧
那*target++ 里面是什么了

jackz007 发表于 2020-12-20 11:01:49

         很简单,在不输入任何东西的情况下,str = '\n', str = '\0' ,就是说,str[] 并不空,代码中的变量 length 是在统计字符串结束标志 '\0' 前面有几个字符,很显然,length = 1,因为换行符 '\n' ,使用 fgets() 读入的每一个字符串中,最后一个字符都是 '\n',所以,为了忽略它,最后,在显示字符数量时,使用的是 length - 1。
页: [1]
查看完整版本: 指针初步