本文目錄一覽:
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進制,在合起來就成。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/312589.html