我正在寫一個C程序,但我一直有問題與我的字符數組。當我用prinf打印時,我一直在收拾垃圾。這裏是我所得到的,當我打印的例子:如何擺脫字符數組中的垃圾?
焦炭在t.symbol是Aôÿ¿
焦炭在TABL [0] .symbol是一個
字符在TABL [1] .symbol被一個
炭在TABL [2] .symbol是在一個TABL
炭[3] .symbol是d
炭在TABL [4] .symbol爲e
炭在TABL [5] .symbol爲f
炭在TABL [6] .symbol是克在TABL
炭[7] .symbol是在TABLħ
炭[8] .symbol爲i
炭在TABL [9] .symbol是在t X
炭[0] .symbol是a0AÃ
炭在t [1] .symbol是B)@ A4
炭在t [2] .symbol是CKU *
炭在t [3] .symbol是Aôÿ¿
炭在t [4] .symbol是去
有人告訴我如何擺脫字符數組中的垃圾?
這裏是我的代碼
#define MAX 100
#ifndef SYMBSIZE
#define SYMBSIZE 1
#endif
typedef struct tableme
{
char symbol[SYMBSIZE];
int value;
int casenmbr;
int otherinfo;
}tabletype;
int main(int argc, char **argv)
{
tabletype t[MAX];
t[3].symbol[0] = 'A';
t[0].value=1;
t[0].casenmbr = 7;
t[0].otherinfo = 682;
tabletype tabl[MAX];
tabl[0].value = 1;
tabl[0].symbol[0] = 'A';
tabl[1].value = 11;
tabl[1].symbol[0]= 'a';
tabl[2].value = 12;
tabl[2].symbol[0] = 'a';
tabl[3].value = 13;
tabl[3].symbol[0] = 'd';
tabl[4].value = 14;
tabl[4].symbol[0] = 'e';
tabl[5].value = 15;
tabl[5].symbol[0] = 'f';
tabl[6].value = 16;
tabl[6].symbol[0] = 'g';
tabl[7].value = 17;
tabl[7].symbol[0] = 'h';
tabl[8].symbol[0] = 'i';
tabl[9].symbol[0] = 'x';
t[1].symbol[0] = 'b';
t[0].symbol[0]= 'a';
t[2].symbol[0]= 'c';
t[4].symbol[0]= 'g';
printf("char at t.symbol is %s \n", t[3].symbol);
for(x=0;x<10;x++)
{
printf("char at tabl[%d].symbol is %s \n",x, tabl[x].symbol);
}
int j;
for(j = 0; j<5;j++)
{
printf("char at t[%d].symbol is %s \n",j, t[j].symbol);
}
return 0;
}
謝謝,它解決了我的問題。 – 2010-03-19 17:41:23
作爲gabe所說的擴展,當您嘗試打印爲字符串時,得到額外亂碼的原因是因爲您的數組未初始化。你看到的亂碼是在分配數組時使用的內存中的垃圾。 – bta 2010-03-19 22:00:36