1樓:匿名使用者
第6行改為:char a[100]=,b[100]=;
如果要輸出最終結果,沒必要每複製一個字元就輸出一次。將第25行刪掉。
2樓:勵志作大神
可以參考一下這個,講的很清楚:亂碼問題
>
codeblocks亂碼問題。它這個是codeblocks的,其他其實也差不
太多吧。關鍵是:
原始檔儲存編碼
編譯器解釋原始檔的編碼
生成執行檔案時的編碼
這三個一致,就不會有亂碼。
3樓:匿名使用者
你需要在拼接後在最後面加一個結束字元\0,如果沒有結束字元就會把後面的字元輸出。
4樓:祿飛馬欣榮
字串陣列各字元單個賦值的話,你得主動在每串最後一個字元之後新增'\0',表示串結束了,輸入時就沒有多餘的亂碼了,因為gets()或scanf()
的%s都是主動在串結束後新增了
'\0'的
c語言 字串輸出時最後出現亂碼
5樓:匿名使用者
輸出出現亂碼就是因為字串結尾並沒有結尾符'\0'。
gets函式讀入一行字串時,會在最末尾自動加上'\0'結尾。但是你在for迴圈內將s2的字元一個個拷貝到s中的時候,迴圈限定條件只到了s2字串的'\0'結尾符之前,所以輸出亂碼了。
將迴圈條件k
6樓:匿名使用者 #include #include int main() { int a,b,k; char s1[1000],s2[1000],ex; gets(s1); gets(s2); a=strlen(s1); b=strlen(s2);//計算字串長度//char s[a+b+1]; memcpy(s,s1,a);//把s1放入s中//for(k=a;k c語言,字串輸出是亂碼 7樓: #include #include #include int random(int num); void main() printf("請依次輸入學生姓名:"); for(i=0;i被點到的同學的名字是:"); printf("%s ",p[random(n-1)]); }int random(int num) 8樓:匿名使用者 你好沒有亂碼 就是邏輯上有些錯誤如圖: 9樓:匿名使用者 按照程式是在a字元 串中隔一個字元取一個形成b字串 void main() half(a); }輸出24680bdfhj 如果出亂碼,可能你的a陣列賦值方面有問題,不知道你是如何定義a陣列和呼叫函式的 10樓:匿名使用者 輸出亂碼是必須的, 因為你的資料型別搞錯了, 你使用的是字元函式stringcopy()來拷貝字元; 那麼要處理的資料當是char型別, 然而你所定義的指標應當也是char型別; 你應當修改的地方是 int *str1,*str2;//請將int改為char 11樓:匿名使用者 沒什麼問題,第一個for迴圈後多了一個分號;只要保證你傳入該函式的陣列a中有準確的二十個字元就行,如:char a=; 12樓: while(1) else } 13樓:匿名使用者 把讀迴圈改為 : while(fgets(str,120,fp) != null) printf("%s\n",str); 這樣就不需要直接檢查檔案是否結束,這是因為fgets()函式在讀滿120個字元或遇到'\n'時,就返回str的首址。在讀檔案時,測試是否到檔案結束經常出錯,我看見高手們都很少使用feof();函式,原因大概在此吧! 14樓:匿名使用者 原因向他們說的那樣, char a是一個區域性變數, 函式返回後他在棧上的空間就自動釋放了... 可以這樣改下: #include #include #include #include using namespace std; #define max_len 10 char* getnick() return a; }void main() 15樓:匿名使用者 getnick函式內的陣列a是區域性陣列,在棧上分配空間``,當getnick執行完後,棧空間會被** 可把a定義為全域性變數或動態申請空間(在堆中分配空間) 16樓:匿名使用者 getnick 返回的a,是一個區域性變數,當getnick返回後,這個變數就無效了,這個變數所指記憶體中的內容變得不可**,列印出來的當然不行了。你要麼把 a 宣告在函式外面,作一個全域性變數,要麼在getnick裡 static char a = ....; 17樓:匿名使用者 你的 str2 沒有加結束字元 加上 str2[n] = '\0'; 就能濾掉後面的亂碼了 18樓:匿名使用者 if( !(file = fopen(name, "wb"))) 你是以二進位制的方式開啟檔案的,用「w+」吧: fopen(name, "w+") 19樓:匿名使用者 #include int main() str2[n]='\0'; }puts(str2); putchar('\n'); return 0; }就是 str2 的結束加上結束符『\0』 c語言輸出字串陣列出現亂碼 20樓:已存在這個名字 c語言字串以'\0'結尾,如果不以該符號結尾則輸出%s時會出錯,程式一直往存放字串的地址訪問。而你的程式中並沒有賦'\0'給那兩個陣列,所以會出現亂碼。 沒有出現亂碼的陣列是因為你初始化了,初始化時編譯器會給它加上'\0'符號。 21樓:匿名使用者 #include int main(void) }c語言中字串以'\0'結尾,你這樣迴圈50次把超過你輸入的字元範圍都讀出來了。 22樓: 字串陣列各字元單個賦值的話,你得主動在每串最後一個字元之後新增 '\0',表示串結束了,輸入時就沒有多餘的亂碼了,因為gets()或scanf() 的%s都是主動在串結束後新增了 '\0'的 23樓:匿名使用者 新增一個結束字元: a[i]='\0'; 或者在初始化字元陣列a的時候,首先 初始化字元陣列a的記憶體,memset(a,0,40); 24樓:匿名使用者 由於hello 只有5個位元組,而str迴圈中輸出的是50個位元組的內容,剩下的45位元組的空間,都還沒有初始化過。 訪問未曾初始化的記憶體,就會出現意想不到的輸出結果(不應該這麼做)所以修改for迴圈為 for(i =0; str[i] != '\0'; i++)就可以了~ 其中'\0'是字串的結束符。 25樓:餛飩 字串是以/0結束為標誌的,出現亂碼的話,應該是沒有找到正確的/0或者,你把字串的/0重新賦值了。 char str = "hello, world !"; str[strlen(str)] = 4;//此時,字串就被破壞,會輸出亂碼。 26樓:匿名使用者 沒有**很難給你準確的答案,但是通常是輸出格式有誤引起的,看看printf函式的變數前有沒有寫了多餘的&取地址符或者檢查一下陣列有沒有越界 27樓:匿名使用者 肯定把'\0'輸出了 檢查一下判斷迴圈結束條件是否正確 28樓:被黑狂魔託雷斯 #include int main()} c語言列印字串亂碼,應該怎麼辦? c語言 字串輸出時最後出現一個亂碼 **等 29樓:匿名使用者 for (i = 0; i <= len; i++) 兩個這個地方都要寫成 < 不能等於 30樓:鑄信 修改這裡:len = strlen(cs)-1; c語言陣列輸出出現亂碼 31樓:匿名使用者 由於hello 只有5個位元組,而str迴圈中輸出的是50個位元組的內容,剩下的45位元組的空間,都還沒有初始化過。 訪問未曾初始化的記憶體,就會出現意想不到的輸出結果(不應該這麼做)所以修改for迴圈為 for(i =0; str[i] != '\0'; i++)就可以了~ 其中'\0'是字串的結束符。 32樓:匿名使用者 #include int main(void) }c語言中字串以'\0'結尾,你這樣迴圈50次把超過你輸入的字元範圍都讀出來了。 33樓:匿名使用者 這是因為你的陣列沒有初始化,而你要全部輸出,所以會這樣顯示,你可以利用strlen函式獲取到字串長度,然後再for迴圈裡把50換為這個長度strlen(str),就可以了,記得要加標頭檔案,#inclued 34樓:匿名使用者 不太嚴謹的改法是迴圈條件i<50改為str[i]!='\0' 35樓:被黑狂魔託雷斯 #include int main()} c語言字串輸出亂碼 36樓:匿名使用者 輸出來亂碼是必須的, 因為你的數源據型別搞錯了bai, 你使用的是字元 du函式zhistringcopy()來拷貝字元; 那麼要處理的數dao據當是char型別, 然而你所定義的指標應當也是char型別; 你應當修改的地方是 int *str1,*str2;//請將int改為char 37樓:匿名使用者 將你程式中的所有int替換為char就對了。 include int main scanf s a for i 0 a i 0 i for j 0 j 5 j 修改 1 下標從0 4,共5個 return 0 每行結尾的 僅僅是為了連線字串使用的,如果一個字串過長,寫在一行比較不合適,就在該行結尾處加上一個反斜槓 就可以在下邊的行繼續寫這個字串... include include main char a 100 b 100 c 100 int i 0,j 0,n 0 gets a while a i 0 if a i 7 0 a i 1 7 0 b j a i b j a i 1 n i i b j 0 for i j 0 i 0 i j if... 就是ascii碼的 來加減,字母的大寫和小自寫的ascii碼的差值是一樣的。小寫的字母ascii碼為 97 a 到 122 z 轉換成大寫字母則ascii減32,變成從65 a 到90 z 每個字母對應一個ascii碼,查ascii碼錶就可以一目瞭然。輸入字母,轉換為int型別,看其值是在什麼範圍,...c語言字串陣列的問題C語言字串陣列的問題
c語言字串符
c語言字串中大小寫字母轉換C語言字串中大小寫字母轉換