雨如洁 发表于 2020-4-21 16:01:15

获取字符长度 ,中文也可以获取

#include <stdio.h>

#define MAX 1024

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

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

      while (1)
      {
                ch = *target++;
                if (ch == '\0')
                {
                        break;
                }
                if ((int)ch < 0)
                {
                        target += 2;
                }
                length++;
      }

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

      return 0;
}
if ((int)ch < 0)
{
target += 2;
}这个没有看懂能解释一下嘛




qiuyouzhi 发表于 2020-4-21 16:03:43

因为在大部分的编译器环境里面,中文字符都是占两个字节的
占几个字节就加几个

雨如洁 发表于 2020-4-21 16:26:57

qiuyouzhi 发表于 2020-4-21 16:03
因为在大部分的编译器环境里面,中文字符都是占两个字节的
占几个字节就加几个

while (1)
      {
                ch = *target++;
                if (ch == '\0')
                {
                        break;
                }
                if ((int)ch < 0)
                {
                        target += 2;
                }
                length++;
      }大佬这个ch = *target++   那个++不是优先于 *相当于*(target++)那是不是代表从 target+1开始了   没有target可以指导一下吗谢谢<img src="https://fishc.com.cn/static/image/smiley/ARU/aru-1x-1_131.png" smilieid="298" alt="" border="0">

qiuyouzhi 发表于 2020-4-21 16:27:44

雨如洁 发表于 2020-4-21 16:26


++会在下一次循环时才起作用。
页: [1]
查看完整版本: 获取字符长度 ,中文也可以获取