c語言字元問題顯示出漢字,c語言輸出字串陣列出現亂碼

2023-01-02 13:45:39 字數 3461 閱讀 2887

1樓:不是會員的使用者

使用wchar型別處理寬字元型別試試,漢子屬於寬字元。

2樓:匿名使用者

#include"stdio.h" 應該是#include

c語言輸出字串陣列出現亂碼

3樓:已存在這個名字

c語言字串以'\0'結尾,如果不以該符號結尾則輸出%s時會出錯,程式一直往存放字串的地址訪問。而你的程式中並沒有賦'\0'給那兩個陣列,所以會出現亂碼。

沒有出現亂碼的陣列是因為你初始化了,初始化時編譯器會給它加上'\0'符號。

4樓:

字串陣列各字元單個賦值的話,你得主動在每串最後一個字元之後新增 '\0',表示串結束了,輸入時就沒有多餘的亂碼了,因為gets()或scanf() 的%s都是主動在串結束後新增了 '\0'的

5樓:匿名使用者

新增一個結束字元: a[i]='\0';

或者在初始化字元陣列a的時候,首先 初始化字元陣列a的記憶體,memset(a,0,40);

6樓:匿名使用者

由於hello 只有5個位元組,而str迴圈中輸出的是50個位元組的內容,剩下的45位元組的空間,都還沒有初始化過。

訪問未曾初始化的記憶體,就會出現意想不到的輸出結果(不應該這麼做)所以修改for迴圈為

for(i =0; str[i] != '\0'; i++)就可以了~ 其中'\0'是字串的結束符。

7樓:餛飩

字串是以/0結束為標誌的,出現亂碼的話,應該是沒有找到正確的/0或者,你把字串的/0重新賦值了。

char str = "hello, world !";

str[strlen(str)] = 4;//此時,字串就被破壞,會輸出亂碼。

8樓:匿名使用者

沒有**很難給你準確的答案,但是通常是輸出格式有誤引起的,看看printf函式的變數前有沒有寫了多餘的&取地址符或者檢查一下陣列有沒有越界

9樓:匿名使用者

肯定把'\0'輸出了 檢查一下判斷迴圈結束條件是否正確

10樓:被黑狂魔託雷斯

#include

int main()}

linux中c語言中漢字字串的輸出

11樓:匿名使用者

1、計算機用兩個位元組來表示一個漢字,「我」在記憶體裡就是這樣存放的:ce d2。ce是str[0]的內容,d2是str[1]的內容。

第一次迴圈輸出str[0],但是這個字元在ascii字符集裡代表這樣一個東西(不知道在這兒能不能正常顯示),但是windows的命令提示符程式讀取到這裡就會自動使用寬字符集,也就是說,它已經準備好讀取下一個字元,然後把他們當成一個字元顯示出來。於是就出現了那個漢字。

2、例程:

#include

int main()

12樓:匿名使用者

你的字串都沒有終止符號,也就是'/0',這樣編譯器就會把後面的字串也算進來。這麼寫試試:

int i;

char a[10][3]=;

for(i=0;i<10;i++)

a[i][2]='/0';

for(i=0;i<10;i++)

printf("%s\n",a[i]);

return 0;

13樓:匿名使用者

將a[10][3]改為a[10][4],中文佔了3個位元組。

14樓:匿名使用者

。。。。。。。。。。。。。

實驗結果,3個似乎存的不對勁

自己執行下面的程式,自己執行一下...就明白了...

感覺現在漢字好像用3個位元組才能儲存下來了??這樣,你用3個位元組存就把字串的結束符給丟掉了...然後列印下來必然是這樣的情況了麼...

具體我也不太明白...strlen是去掉了結束符的長度...所以,現在看起來似乎是一個漢字佔三個位元組了....

我的機器:賽揚,32位,arch linux...

#include

#include

int main()

,,,"四","物","社","嗯","階","己","嗯"};

for(i=0;i<10;i++)

printf("%s\n",a[i]);

return 0;}

c語言的問題 不能出現中文

15樓:聽牛人經歷

為什麼程式語言不能用中文?

16樓:猿動力

字元編碼的問題,你在編輯器中試著將原始碼以gbk或gb2312的方式儲存.

17樓:匿名使用者

將字串首尾的空格去除

c語言出現漢字。。

18樓:匿名使用者

想輸出什麼?以字元形式輸出219,是把219作為ascii碼,然後輸出相應的字元,但是219沒有對應的ascii碼,所以輸出的亂的。

如果想要輸出219的話,那麼就改為

printf("%d%d",219,219);

19樓:

很正常,這是在漢字狀態下顯然的結果。

由於程式連續顯示兩個大於127的字元型數值,系統認為這是一個漢字,而顯然漢字"壙"的內碼就是219,219.

20樓:橙心橙願

printf("%c%c",219,219);

%c是表示字元,也可以是數字代表assic碼,219所代表的應該就是這個壙字

21樓:包靜柏

printf("%c%c",219,219); 這個後面只能填變數。。。不能填219。。。

22樓:匿名使用者

輸出整數的話就是%d,亂碼的原因是沒有找到相應的ascii值,或者型別轉化失敗。

c語言如何找查中文字元的?看問題補充,謝謝

23樓:匿名使用者

我把**給你吧

#include

#include

main()

c語言問題:在螢幕上顯示字串yy

24樓:匿名使用者

#include

int main(void)

return 0;}

25樓:匿名使用者

char yy[200] = "ok??\n";

改成char *yy = "ok??\n";

fol (; *yy; yy++)

改成 for (; *yy; yy++)

c語言基礎問題如何合併字元,C語言怎麼合併兩個字串

以下 可以達到你的要求 include int main printf num d n num table 0 a table 1 b table 2 c for i 0 i 3 i str i 0 printf str s n str return 0 include include includ...

c語言問題,C語言問題C語言問題

沒有縮排,看來比較累 但是輸入一串字元以後要輸入結束標誌eof表示你的輸入結束了 如果你是unix,就用ctrl d,dos就用ctrl z include define maxline 1000 maximum input line length int getline char line,int...

c語言問題,C語言問題C語言問題

把檔案中所有逗號用空格替換。把if fp fopen goods.dat rb null 改成fp fopen goods.dat r null 把 feof fp 換成 0。把 一行刪除。以上3 4也可以在while前新增一行 解決 把printf s,2s,d,d n name,price,in...