int search_symtab(char *str,struct SYMTAB **symtab)
{
struct SYMTAB *cur=NULL;
int result=-1;
int i;
char temp[LINE];
strcpy(temp,str);
printf("1 %s\n",str);
for(i=0;i<20;i++)
{
printf("2 %s\n",str);
if(symtab[i]!=NULL)
cur=symtab[i];
else
{
//printf("%d\n",i);
continue;
}
printf("3 %s\n",temp);
while(1)
{
printf("4 %s\n",temp);
printf("%s : %s\n",temp,cur->name);
if(strcmp(temp,cur->name)==0) // 맞는 값이 있다면 값을 저장하고 반복문을 빠져나간다.
{
//result = cur->opcode;
result = cur->address;
break;
}
else if(cur->next!=NULL)
cur = cur->next; // 다음 노드 검사
else if(cur->next==NULL)
break;
}
}
//printf("test fuck10\n");
return result;
}
저 굵은글씨의 temp가 위에서는 출력되고 바로 아랫줄에서는 공백으로 나오는데;
이거 왜이럼?
아오 ㅅㅂ
\\ 지워지네;
글쎄다. 내가 착각한게 아니라면, 잘모르겠네. 일단 혹시 모르니 저 char temp[LINE] -> char temp[8192] 정도로 충분히 크게 한번 해주고(이문제는 아니겠지만), 그리고 clean ->rebuild 해서 컴파일이 꼬여서 그랬던건지 확인해보고, 그래도 안되면, 다시한번 저 함수 한줄한줄 주의해서 다시 보고, 그래도 안되면, 프로그램 전체소스 다 봐야 한다. 특히 strcpy, memcpy, arr[i] = something 처럼 특정 메모리를 변경하는 코드는 모두 다 봐야해.
ㄴ 메모리상의 문제가 맞는것 같으요..
함수안에 있는 내용을 복사해와서 호출하는 부분을 그걸로 대체하니까 되긴되는데 1600줄짜리를 다 볼 시간이 없어서 ㅠㅠ 일단 이렇게 떼우고 조교나 교수님한테 여쭤보던가 해야겠네여 여튼 답변 감사합니다