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

2021-03-28 02:47:09 字數 3245 閱讀 1156

1樓:

#include

#include

#include

int random(int num);

void main()

printf("請依次輸入學生姓名:");

for(i=0;i被點到的同學的名字是:");

printf("%s ",p[random(n-1)]);

}int random(int num)

2樓:匿名使用者

你好沒有亂碼

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

3樓:匿名使用者

按照程式是在a字元

串中隔一個字元取一個形成b字串

void main()

half(a);

}輸出24680bdfhj

如果出亂碼,可能你的a陣列賦值方面有問題,不知道你是如何定義a陣列和呼叫函式的

4樓:匿名使用者

輸出亂碼是必須的,

因為你的資料型別搞錯了,

你使用的是字元函式stringcopy()來拷貝字元;

那麼要處理的資料當是char型別,

然而你所定義的指標應當也是char型別;

你應當修改的地方是

int *str1,*str2;//請將int改為char

5樓:匿名使用者

沒什麼問題,第一個for迴圈後多了一個分號;只要保證你傳入該函式的陣列a中有準確的二十個字元就行,如:char a=;

6樓:

while(1)

else }

7樓:匿名使用者

把讀迴圈改為 : while(fgets(str,120,fp) != null) printf("%s\n",str);

這樣就不需要直接檢查檔案是否結束,這是因為fgets()函式在讀滿120個字元或遇到'\n'時,就返回str的首址。在讀檔案時,測試是否到檔案結束經常出錯,我看見高手們都很少使用feof();函式,原因大概在此吧!

8樓:匿名使用者

原因向他們說的那樣, char a是一個區域性變數, 函式返回後他在棧上的空間就自動釋放了...

可以這樣改下:

#include

#include

#include

#include

using namespace std;

#define max_len 10

char* getnick()

return a;

}void main()

9樓:匿名使用者

getnick函式內的陣列a是區域性陣列,在棧上分配空間``,當getnick執行完後,棧空間會被**

可把a定義為全域性變數或動態申請空間(在堆中分配空間)

10樓:匿名使用者

getnick 返回的a,是一個區域性變數,當getnick返回後,這個變數就無效了,這個變數所指記憶體中的內容變得不可**,列印出來的當然不行了。你要麼把 a 宣告在函式外面,作一個全域性變數,要麼在getnick裡

static char a = ....;

11樓:匿名使用者

你的 str2 沒有加結束字元

加上 str2[n] = '\0';

就能濾掉後面的亂碼了

12樓:匿名使用者

if( !(file = fopen(name, "wb")))

你是以二進位制的方式開啟檔案的,用「w+」吧: fopen(name, "w+")

13樓:匿名使用者

#include

int main()

str2[n]='\0';

}puts(str2);

putchar('\n');

return 0;

}就是 str2 的結束加上結束符『\0』

c語言 字串輸出時最後出現亂碼

14樓:匿名使用者

輸出出現亂碼就是因為字串結尾並沒有結尾符'\0'。

gets函式讀入一行字串時,會在最末尾自動加上'\0'結尾。但是你在for迴圈內將s2的字元一個個拷貝到s中的時候,迴圈限定條件只到了s2字串的'\0'結尾符之前,所以輸出亂碼了。

將迴圈條件k

15樓:匿名使用者

#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語言,字串輸出是亂碼是怎麼回事?

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

16樓:匿名使用者

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

{for (j=0;j<26-i-1;j++) //這裡改一下先

c語言列印字串亂碼,應該怎麼辦?

c語言列印字串亂碼問題

17樓:匿名使用者

#include

void reverse(char *p,char *q)}char *myitoa(int value,char * const string,int radix )

else

while(value)

if(sign)

reverse(string,s-1);

}*s='\0';

return string;

}int main(void)

18樓:匿名使用者

#include

#include

int main()

num[k] = '\0';

puts(num);

return 0;}

c語言巨集定義字串問題,C語言巨集定義字串問題

用拼接符可以做到 define string arg aaaaaaa arg bbbbbbbbbb 但arg必須是個常量,不能是變數 c語言,將數字和字串拼成一個字串。用巨集來做,用api誰都會 巨集定義字串拼接可以使用巨集運算 即 define strcat x,y x y。運算子可以將兩個記號版...

C語言符串問題,C語言 字串問題

因為在編譯的時候,這兩個陣列的空間是已經分配好的,而這兩個陣列的定義是在相鄰的,所以分配的空間也是連續的,因此你在輸入超過陣列i長度的字元時,會覆蓋到陣列j的空間。在vc裡編譯的時候,後面的變數存放在前一個變數的前面,比如 include stdio.h main 在我的機器上輸出是1245056,...

c語言中字串和陣列的區別,C語言中字串和陣列的區別

這個是字元陣列。c語言字元陣列和字串的區別,字元陣列是一個儲存字元的陣列,而字串是一個用雙括號括起來的以 0 結束的字元序列,雖然字串是儲存在字元陣列中的,但是一定要注意字串的結束標誌是 0 總的來說是沒有區別的,字串就是以字元陣列形式儲存的。可以把一個字串看成是一個字元陣列,可以按陣列那樣操作。兩...