在c语言编写程序时,难免会涉及到汉字的问题,汉字的存储方式不同于普通字符,在不同的平台上,或编译环境中点有不同的字节时,既然不是单字符,如果有存储使用汉字,自然就想到使用字符串。
通常用户可以使用strlen("中文")来显示,在当前环境下一个汉字字符在内存中占用的字符数。
如果显示的是6,则一个汉字点用3个字节的长度,假设一个汉字长度为3个字节。
一般的定义方式,需要注意的是,定义字符数组的长度不同比实际字符个数占用的长度加上一个‘/n'的个数少,如过长度不够输出的信息就会出现错误,因为无法知道其结束的位置。
char s[7]="中国"; 2 * 3 + 1;
char s[3] ="黄“;
因为对于字符串数组在结束处会自动加上一个结束标志“/n"。
char s[] = "中国人民“; //使用默认的方式。
对于汉字字符串同样可以,使用字符串函数中提供的函数,如strcmp,strcpy,strcat等。
只要将汉字视为字符串处理就行了。
定义为汉字字符二维数组,如下:
char word[10][4]={"中","国","人","民"};
word[0]便是“中”,依次类推word[3]是“民”。
通常用户可以使用strlen("中文")来显示,在当前环境下一个汉字字符在内存中占用的字符数。
如果显示的是6,则一个汉字点用3个字节的长度,假设一个汉字长度为3个字节。
一般的定义方式,需要注意的是,定义字符数组的长度不同比实际字符个数占用的长度加上一个‘/n'的个数少,如过长度不够输出的信息就会出现错误,因为无法知道其结束的位置。
char s[7]="中国"; 2 * 3 + 1;
char s[3] ="黄“;
因为对于字符串数组在结束处会自动加上一个结束标志“/n"。
char s[] = "中国人民“; //使用默认的方式。
对于汉字字符串同样可以,使用字符串函数中提供的函数,如strcmp,strcpy,strcat等。
只要将汉字视为字符串处理就行了。
定义为汉字字符二维数组,如下:
char word[10][4]={"中","国","人","民"};
word[0]便是“中”,依次类推word[3]是“民”。
#include #include int main() { char word[10][4]={"中","国","人","民"}; char key1[10]; char key2[10]; printf("%s %s %d %d/n",word[0],word[3],strlen(word[3]),strlen("中国人")); //将汉字作为字符串读入 scanf("%s",key1); //使用字符串函数 printf("%s %d/n",key1,strlen(key1)); scanf("%s",key2); printf("%s %d/n",key2,strlen(key2)); if(strcmp(key1,key2) == 0) printf("Two same worlds!/n"); else printf("Diffrent!/n"); char tmp[7]; strcpy(tmp,key1); strcat(tmp,key2); char a[4]="如"; //定义一个汉字字符 printf("%s/n",a); printf("%s/n",tmp); char s[13]="中国人民"; printf("%s/n",s); return 0; }Console显示:
中 民 3 9 黄 黄 3 黄 黄 3 Two same worlds! 如 黄黄 中国人民