鹿酸梅 发表于 2021-3-8 21:54:40

S1E22,统计字符串个数(含中文),请问为什么输入中文后结果就不准确了

#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;
       
}

xieglt 发表于 2021-3-8 22:03:39

                if((int)ch<0)
                {
                        target+=2;   //改成 target ++; 或 target+=1;
                }

jackz007 发表于 2021-3-8 22:19:37

#include<stdio.h>
#define MAX 1024

int main(void)
{
      char ch , str , * target               ;
      int length                                    ;
      printf("请输入一个字符串:")                  ;
      fgets(str , MAX , stdin)                      ;
      for(length = 0 , target = str ; * target ; target ++ , length ++) {
                if(* target < 0) target ++            ; // windows 系统,每个汉字占用 2 个字节
      }
      printf("你总共输入了%d个字符\n" , length - 1) ; // length - 1 为了减掉字符串末尾的换行符 '\n'
}
页: [1]
查看完整版本: S1E22,统计字符串个数(含中文),请问为什么输入中文后结果就不准确了