C 프로그램을 작성하고 있지만 char 배열에 문제가 있습니다. 내가 prinf를 사용하여 인쇄 할 때 나는 쓰레기를 계속 가지고 간다. 여기에 내가 그것을 인쇄 할 때 내가 무엇을 얻을의 예입니다 t.symbol에서어떻게 문자 배열로 쓰레기를 없애 버리시겠습니까?
문자가 Aôÿ¿이다가
TABL에서 문자 [0] .symbol는 TABL에서의
문자 [1] .symbol가된다 TABL에서
CHAR [2] .symbol가 TABL에서
CHAR [3] .symbol가 TABL에서
숯불 D [4] .symbol가 TABL에서 E
문자 인 [5] .symbol는
을 f를 문자가 tabl [6]. 기호가 g
문자가 tabl [7]. 기호가 h
문자가 tabl입니다. [9] .symbol는 A4 @ t에서 X
CHAR [0] a0AÃ인 .symbol
톤에서 CHAR [1] B는 .symbol된다) [8] .symbol가 TABL에서
CHAR 난에게이다 t [2]에서 .symbol
숯불 ckU 인 *
t에서 CHAR [3] Aôÿ¿인 .symbol
t에서 CHAR [4]
갈 수인 .symbol 누군가 어떻게해야하는지 말해줘. chars의 배열에서 쓰레기를 없애 버려?
여기
#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;
}
감사합니다. 내 문제가 해결되었습니다. –
gabe가 말한 것에 대한 확장으로서 문자열로 인쇄하려고 할 때 여분의 횡설수설이 생기는 이유는 배열이 초기화되지 않았기 때문입니다. 당신이 볼 수있는 횡설수설은 할당되었을 때 배열에 의해 사용 된 메모리에 있었던 쓰레기입니다. – bta