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;
} if((int)ch<0)
{
target+=2; //改成 target ++; 或 target+=1;
} #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]