s1e22课后题
使用 fgets 函数(使用文档 -> 传送门)读取用户输入的字符串(英文),并用指针法来计算字符串的字符个数https://xxx.ilovefishc.com/forum/201605/30/113319saxa0ejuajjaoxx0.png你可能发现写出来的代码只能统计英文字符的个数,遇到中文字符结果就会出错。请自行观察你当前系统对中文字符的处理方式,并设计一个可以统计中文字符以及中英文混合字符的程序。为啥这个里面的教程1个汉字占1个字符 我写出来确实三个#include <stdio.h>
#define MAX 1024
int main()
{
char str;
int n;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
char *p;
p = str;
for(n = 0; ; n++)
{
if(*(p + n) == 0)
break;
}
printf("您一共输入%d个字符!\n", n - 1);
return 0;
}
请输入一个字符串:鱼C工作室-Fishc.com
您一共输入23个字符!
一个汉字占3个字符请问是为什么 中文字符本来就和普通字符不同。但是编译器不一样,字符所占的字节数也不一样。
但是每个汉字转换成int类型都是负的,你可以将字符串转换成整型在进行判断,如果所对应的整形数据小于零,那么将指针往后移。在我用的编译器里汉字占两个字节,我会将指针往后移一位,在你那里指针占三个字节,你应该把指针往后移两位。
具体代码我就不写了,答案上有。我提供一个思路。 不同编译器处理中文的方法都不一样。 每个编译器多不一样,一个汉字在我这里是 2 个字符:
领一下鱼币
页:
[1]