1樓:
這東西應該和具體的環境有關。
在VisualStudio預設情況下,是GBK編碼,兩個位元組存乙個漢字,因此如果引用不慎會造成亂碼。
#include
intmain
()/*
* 輸出: c4 e3 ba c3
* 編碼: 你 : c4e3
* 好 : bac3
*/printf
("%s",s
);/*
* 輸出: 你好
* 注: 程式正常操作
*/printf
("%s",s
+1);/*
* 輸出: 愫胅
* 注: 輸出了亂碼,同時程式直接退出。要執行後面的程式應將本行語句注釋掉。
*/printf
("%s",s
+2);/*
* 輸出: 好
*/return0;
}同時,請看
譚九鼎:C語言與中文的一些測試 (Win, UTF8原始碼)
2樓:嵌入式Linux
#include "stdio.h"
int main(void) 輸出
5 你好
Process exited after 0.04922 seconds with return value 0
請按任意鍵繼續. . .
3樓:勝勳
C程式如下
#include
unsigned
chara[
16]="人們笑我太瘋癲"
;int
main()
4樓:小莊讀書
首先,不論漢字還是其它字元,儲存到記憶體都是要經過特定編碼方式編碼的。
比如,常見的「GBK」編碼方式裡,「知乎」二字的編碼分別是「知(D6AA)乎(BAF5)」,C語言的字串按逐個位元組的方式儲存「知乎」,就是把上面的GBK編碼(D6AA)和(BAF5)儲存到記憶體裡面,由於「知乎」每個字占用了兩個位元組的空間,所以共需要四個位元組的空間來儲存。
當然,不同的編碼方式,每個字元占用的記憶體空間大小可能是不同的,只是上面提到的「GBK」編碼方式裡面,漢字通常占用兩個位元組的空間。
5樓:Alan
首先在c語言裡如果你要儲存的漢子比如是「你好知乎」這個字串,那麼在編輯器裡會根據這幾個漢字的內在編碼(乙個漢子通常需要2個位元組來標識其唯一編碼),對這個字串進行編碼成8個位元組,然後進行儲存。
6樓:江曉錦翁
字串,舉例乙個人的姓名:小明
用英文儲存應該是:xiaoming,乙個字元佔乙個位元組所以,應該是char[7]
但是C語言會預設加上乙個'\0',它也會佔乙個位元組所以應該是char[8]
但是漢字在字串中,乙個漢字佔兩個位元組
同理,應該是char[4]
或者可以用windows庫里的wchar_t來儲存,這個預設就是兩位元組
C語言字串如何賦值及輸出?
那個人 你這不是字串賦值,而是字串指標賦值。你定義的是乙個字串指標,指向的是字串常量的起始位址。字串定義 char buf LEN 賦值 strcpy buf,string 或sprintf buf,s string 先不用嘟嘟嘟,p abc 其他不變 首先執行時記憶體裡面會有乙個位置儲存 abc ...
為什麼 C 語言中可以將字串字面量寫成 hello world 這種形式?
很簡單,這樣你就能在文字編輯器中,換行書寫乙個很長的字串了嘛。否則,你的乙個很長的字串,寫出來會怎麼樣,你需要左右滾動你的水平滾動條,不方便。看起來也比較醜。 Narsil 這個問題有點.我認為語法問題沒有啥糾結的,就是這樣規定的,遵照即可,你可以自己查查 c 的標準或者 the c program...
go語言中匯入包名為何是字串型別的?
鄧毅 import 後面跟的字串是包的路徑,這個路徑可以是任何作業系統可以接受的相對路徑,相對於 GOPATH中的任何乙個路徑 再加上 src 等 這裡必須用字串,因為裡面可以包含空格或者其他 Go 不認識的字元。通常,直接引用開源的 package 的話,這裡面一定包含了至少乙個 例如 http ...