您的位置:

c语言编码utf输出,c语言输出utf8编码的中文字符串

本文目录一览:

c语言输入输出汉字

我推荐用

数组

我不太清楚

汉字

的编码

反正汉字不超过10W个

但可以肯定是一个汉字对应一个类似与ascii的编码

假设是100000-200000之间的int类型

ch

先定义

int

code[100000]={0};

读取一个ch(int)就在

code[ch-100000]+=1;

最后遍历code数组就OK

千万别用

链表

什么的,小文件还好说

但文件大了,读取N慢,不幸你试试

C语言如何生成UTF-8编码格式的文件

下面的Unix下函数可以会帮到你

getenv(取得环境变量内容)

相关函数 putenv,setenv,unsetenv

表头文件 #includestdlib.h

定义函数 char * getenv(const char *name);

函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。

返回值 执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。

范例 #includestdlib.h

mian()

{

char *p;

if((p = getenv(“USER”)))

printf(“USER=%s\n”,p);

}

执行 USER = root

putenv(改变或增加环境变量)

相关函数 getenv,setenv,unsetenv

表头文件 #include4stdlib.h

定义函数 int putenv(const char * string);

函数说明 putenv()用来改变或增加环境变量的内容。参数string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。

返回值 执行成功则返回0,有错误发生则返回-1。

错误代码 ENOMEM 内存不足,无法配置新的环境变量空间。

范例 #includestdlib.h

main()

{

char *p;

if((p = getenv(“USER”)))

printf(“USER =%s\n”,p);

putenv(“USER=test”);

printf(“USER+5s\n”,getenv(“USER”));

}

执行 USER=root

USER=root

setenv(改变或增加环境变量)

相关函数 getenv,putenv,unsetenv

表头文件 #includestdlib.h

定义函数 int setenv(const char *name,const char * value,int overwrite);

函数说明 setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。

参数 value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。

返回值 执行成功则返回0,有错误发生时返回-1。

错误代码 ENOMEM 内存不足,无法配置新的环境变量空间

范例 #includestdlib.h

main()

{

char * p;

if((p=getenv(“USER”)))

printf(“USER =%s\n”,p);

setenv(“USER”,”test”,1);

printf(“USER=%s\n”,getenv(“USEr”));

unsetenv(“USER”);

printf(“USER=%s\n”,getenv(“USER”));

}

执行 USER = root

USER = test

USER = (null)

如何使用C语言将汉字转换成UTF8编码,如将“你好”转成:%E4%BD%A0%E5%A5%

你说的好像是不对。这是把ascii马用16进制表示。并不是utf8,我不知道你要干什么,不过我猜你做的是web应用,需要把特殊字符转化成%16进制格式,如果你的系统真是utf8的话,我想你应该这么做

用iconv_open和iconv,先把字符串变成utf-8。然后在把这个串中的每个字节都变成16进制加%的格式。

如果你只是需要16进制转换,那就简单了。把没有字符的ascii拿出来,sprintf(%02x)成16进制,在合起来就成。