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...