1樓:匿名使用者
沒編譯,baireview一下,有
兩個du問題:
gets() 讀取字串,以zhi回車結束dao,但版並不把回車讀進去,權而是把回車換成'\0』結束字串。所以,是否以'\n'來判斷皮字串結束?
下面**:
while(*p[k]!=' ')
實際最後一個單詞並不是以' '做為結束的,這樣在輸出前面幾個單詞後,最後一個單詞在到了末尾還是要繼續輸出,結果就是記憶體中的隨機數,導致出來的是亂碼。嚴重情況訪問記憶體到敏感區域會讓程式崩潰。
建議:如果你的確是分拆分單詞,那不如把有所' '換成'\0', 然後輸出用printif,puts 之類直接輸出,也省了迴圈輸出的麻煩 而且輸出最後一個單詞也不會越界。
2樓:冽冽不是逗比
變數初始化好像你沒做 記憶體裡本來就有亂碼內容
c語言問題!!我輸出的內容是正確的但是後面會有一堆亂碼是怎麼回事??
3樓:聽不清啊
如果輸出的是字串,則是沒有正確設定串尾符'\0'(或是正確的串尾符被破壞掉了)的緣故。
c語言輸出後出現亂碼 求解答問題出在哪
c語言問題,為什麼結果輸出之後還有一堆亂碼
4樓:匿名使用者
你的加上字串結束符啊str2[i-1]='\0'; 還有你要只要i#include
#define n 40
void main()
str2[i]='\0';
printf("%s\n",str2);}
c語言 指標問題? 輸出結果是亂碼… 不知道那裡錯了…求指教…**是寫的**。
5樓:匿名使用者
做輸入操作的時候p指標已經指向了a陣列的末尾,在做輸出的時候並沒有將p指標重新指向a的開始位置,所以才會亂碼,輸出之前重新指向a的首地址就可以了
C語言字串出現亂碼,C語言 字串輸出時最後出現亂碼
第6行改為 char a 100 b 100 如果要輸出最終結果,沒必要每複製一個字元就輸出一次。將第25行刪掉。可以參考一下這個,講的很清楚 亂碼問題 codeblocks亂碼問題。它這個是codeblocks的,其他其實也差不 太多吧。關鍵是 原始檔儲存編碼 編譯器解釋原始檔的編碼 生成執行檔案...
C語言輸入一串英文句子,怎麼讓單詞順序不變,再倒序輸出例如
include include typedef struct stackstack void init stack s void rev stack s printf printf n int main stack s init s char c 1000 gets c for int i 0 i ...
請教各位大大們有關C語言的問題。輸入一串整數,求他們的平均值(保留兩位小數),最大值和最小值
include int main void else sum a while getchar n printf 2lf n d n d n sum cnt,max,min return 0 c語言程式 輸入任意2個整數,求它們的平均值,結果保留2位小數。急求 include void main 執行...