c语言汉字的函数库 c语言汉字的数据类型( 二 )


c语言中,有没有办法输入汉字的函数啊,比如说制作一个成绩单,学生名字用汉字可以吗,可以使用wchar_t,
不过更广泛的,我们都是使用char[] , 即字符数组来储存汉字,但要注意汉字每一个是占用2个char的,再加上C语言要在字符串末尾加一个'\0'结束符 , 所以n个汉字需要2n+1个字节 。
下面给出一个实例程序,它的功能是计算出输入年份的天干地支 。
#include "string.h"
main()
{
int a,b,year;
char gz[6];
static char tg[10][3]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
static char dz[12][3]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戍","亥"};
printf("请输入一个年份:");
scanf("%d",year);
a=(year-1804)%10;
b=(year-1804)%12;
strcpy(gz,tg[a]);
strcat(gz,dz);
printf("%d年的干支为:%s\n",year,gz);
}
运行结果:
请输入一个年份:1999
1999年的干支为:己卯
汉字储存在字符数组中,可使用strcpy,strcmp等函数进行操作,也就是说就是字符串!
你问
学生名字用汉字可以吗?
当然可以!char name[20]即可,一般名字不会超过6个字,所以不会越界 。
输入名字的方法就是输入字符串的方法:
scanf("%s",name);
请问如何用C语言实现汉字,和Unicode编码的转换?字转换:wctomb、mbtowc,wc 指 Wide charactor,mb 指 Multi-byte 。\r\n字符串转换:wcstombs、mbstowcs , wcs 和 mbs 的 s 指 string 。\r\n\r\n这 4 个函数是 C 标准函数库函数中的 。如果只是在 Windows 平台下编程,可直接调用 Windows API 函数 WideCharToMultiByte 和 MultiByteToWideChar 实现 。但是如果调用标准库函数的话,在 Linux下也是有效的 。调用标准库函数 , 首先必须包含 locale.h 并调用 setlocale(LC_ALL, "") 后才能正确转换 。Windows 下的 Multi-byte 是 ANSI 编码的 , Wide charactor 是 Unicode (UTF-16) 编码,而 Linux 下的 Multi-byte 是 UTF-8 编码的 , Wide charactor 是 Unicode (UTF-32) 编码 。\r\n\r\n#include \r\n#include \r\n#include \r\n\r\nint main(void)\r\n{\r\nchar str[12];\r\nwchar_t wstr[] = { 0x52B3, 0x788C, 0 };\r\nsetlocale(LC_ALL, "");\r\nwcstombs(str, wstr, sizeof(str)/sizeof(char));\r\nprintf("%s", str);\r\nreturn 0;\r\n}
C语言字符串处理的库函数有哪些函数名: strrchr
功能: 在串中查找指定字符的最后一个出现
用法: char *strrchr(char *str, char c);
举例:
[cpp] view plain copy
char fullname="./lib/lib1.so";
char *ptr;
ptr = strrchr(fullname,'/');
printf("filename is %s",++ptr);
【c语言汉字的函数库 c语言汉字的数据类型】//运行结果:filename is lib1.so
函数名: strchr
功能: 在串中查找指定字符的第一个出现
用法: char *strchr(char *str, char c);
举例:
[cpp] view plain copy
char fullname="./lib/lib1.so";
char *ptr;
ptr = strrchr(fullname,'.');
printf("after strchr() is %s",++ptr);
//运行结果:after strchr() is/lib/lib1.so
函数名: strtok
功能: 在串中查找指定字符的第一个出现
用法: char *strtok(char *s, char *delim);
说明:
1.strtok函数的实质上的处理是c语言汉字的函数库 , strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串 。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位 。(2)要获得所有的分割单元必须反复调用strtok函数 。
2.strtok函数以后的调用时的需用NULL来替换s.
3.形参s(要分割的字符串)对应的变量应用char s[]=”….”形式,而不能用char *s=”….”形式 。

推荐阅读