這段c語言程式輸出末尾有亂碼,是什麼原因

2021-03-28 02:47:07 字數 3408 閱讀 3798

1樓:匿名使用者

void main(void)

改法,把陣列定義成b[4].並初始化如:char b[4] = ;

為了規範

在給b賦值時;

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

2樓:匿名使用者

這個主要是對字元

串的結尾標誌沒理解,字串要再最後加乙個0 表示字串結束。

a 儲存了『asdf0』(我輸入的是asdf在回車,0是系統自動加入)

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

b[i]=a[i];

b儲存asd(注意這裡沒有0)

strcpy(c,a+3);

c拷貝a[3]=f在拷貝遇到0時,函式就認為拷貝結束這個時候

c儲存f0

strcat(c,b);

在連線b 這個函式中就要看b 陣列中0位置,由於b陣列沒有0 所以就存在亂碼

所以,你不要亂碼

b[80]

for(i=0;i<=strlen(a);i++)b[i]=a[i];

3樓:吳鐵騎

我說錯了 是b沒有結束字元\0

4樓:宇文君

函式strcat(c,b);在連線b 這個函式中就要看b 陣列中0位置,b陣列由於沒有0 ,所以就存在了亂碼

c語言輸出檔案末尾出現多餘的亂碼

5樓:匿名使用者

既然你要以字串的形式輸出 char 陣列,那麼在定義 a 的時候就應該給\0多留乙個空。如果你不想留,那麼在輸出的時候,應該以字元的形式 %c 乙個乙個地輸出。

給字串加\0不是在 fprintf(fout,"%s\0",a); 這個地方加的。要在字串本身,也就是 char a 的最後乙個元素裡賦值為 \0 。

6樓:匿名使用者

輸出字串自動會有\0結束,不需要顯示輸出\0的吧。

另外a總共12個字元,都填值了,沒有地方放\0了,宣告為 char a[15]= 吧

7樓:匿名使用者

百分s是全部資料 用for語句遍歷列印吧 或者試試puts函式 或者用fomat函式規定輸出距離

c語言輸出最後 會多乙個亂碼

8樓:風~月

因為你沒有初始化,char a[100]= ;char b[100] = ;這樣子初始化以後就可以了,使用定義了字元陣列後都必須要初始化,因為字元陣列的長度是根據最後一位是不是''\0''決定的,如果沒有初始化就會出現你這種亂碼的問題了

c語言執行的結果後面為什麼出現亂碼

9樓:劉文正粉絲

每個正常的字串的結尾都有乙個\0, 而你在迴圈最後只判斷是不是回車, 是回車只是結束輸入, 並沒有把回車變成\0, 或在回車後面加上乙個\0, 這樣你的while就無法判斷*fp是不是字串結尾.

10樓:_無憂望月

因為最後的結束沒有'\0',只有『\n』, 你可以修改while(*fp != '\n'),或者自己在後面新增乙個結束標誌

11樓:匿名使用者

在fp = str;前加一句

str[i] = '\0';

c語言問題,輸出結果是亂碼

12樓:碧海風雲

你在定義x結構體的同時,已經定義了乙個x型的全域性變數student1並賦了初值,然而內,你的main函式裡又定義容了同名的區域性變數student1並沒有賦初值。main函式執行時,這裡的student1是未賦初值的,所以student1.name的值並不是"星哥",你以%s輸出它,自然會顯示為「亂碼」。

改正方法是,既然你已經定義了全域性變數,main函式裡就不要再定義了。

#include

#include

struct x  student1 = ;

int main()

執行結果

13樓:匿名使用者

去掉你main函式裡的struct x student1;就可以了#include

#include

struct x

student1=;

int main()

c語言 字串輸出時最後出現乙個亂碼 **等

14樓:匿名使用者

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

兩個這個地方都要寫成 < 不能等於

15樓:鑄信

修改這裡:len = strlen(cs)-1;

c語言為什麼輸出的有亂碼?

16樓:神舟塔下曬紅薯

每次都一樣嗎?

sum好像沒賦初值吧?得到的結果不確定,平均值當然計算不對在這個地方

max=s[0];

maxn=0;

min=s[0];

minn=0;

加一條:

sum=0;

ok 了

c語言程式輸出檔案到螢幕上最後結尾出現乙個亂碼

17樓:匿名使用者

導致出現亂碼的可能很多,你的檔案是ascii還是二進位制?

如果是ascii,你用什麼輸出,是讀乙個字元就輸出還是讀一段字串後輸出,如果讀一段就輸出有可能出現亂碼?

如果是二進位制,你是否按二進位制的讀法開啟的?

另外,!(feof)足夠判斷檔案是否完,請吧具體**或**主要部分貼出來,大家看看

18樓:匿名使用者

while(!feof(in))

fputc(fgetc(in),stdout);

這個迴圈的結束條件是 fgetc(in) 返回了結束符,就是結尾多出來的那個字元

所以加上 結束符 eof 的判斷 就可以了#include

#include"string.h"

#include"stdlib.h"

void main()

while(!feof(in))

fclose(in);}

19樓:匿名使用者

可以啊。

出現你這種可能是你用的是tc,顯示不了漢字。

或者你定義的型別跟檔案中內容不匹配。

c語言的這個c程式 為什麼輸出的是亂碼?

20樓:匿名使用者

你好沒有亂碼

就是邏輯上有些錯誤如圖:

21樓:愛好

沒有具體看到你的輸出結果啊。

C語言初級有以下程式段輸出結果是

for i 1 i 15 j 4 一定是給錯了,應該是for i 1 i 15 i 4 取4個值1,5,9,13 for j 3 j 19 j 4 m 會執行5次m 也就是m 5,j分別取3,7,11,15,19 兩個迴圈是巢狀關係,合計執行為4 5 20。外層迴圈應該是 for i 1 i 15 ...

C語言這段程式求翻譯下

不加的區別就是 現在列印的是a xx,b xx,c xx 你不加列印的就是xx,xx,xx 就是這點區別 不會影響程式執行的 那幾個字元會原樣輸出。有 f的會用後邊的變數a,b,c代替。f代表的a.b,c輸出的格式 哪個大神能給我解釋一下 這個c語言程式怎麼翻譯 程式的功能是輸出從100 200之間...

c語言輸出字串,一開始是亂碼,C語言,字串輸出是亂碼

for i 0 i 26 i for j 0 j 26 i 1 j 這裡改一下先 c語言,字串輸出是亂碼 字串使用前請使用清空語句把垃圾記憶體清理成 0 也就是0x00 0 memset str2,0x00,sizeof str2 當然,也可以在宣告的時候進行初始化 char str2 20 這句也...