c语言中处理汉字问题

来源:互联网 发布:万方数据库怎么收费 编辑:程序博客网 时间:2024/04/30 12:03
     在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]是“民”。
     
#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黄黄 3Two same worlds!如黄黄中国人民