fclose를 해준적이 없는데
fclose에서 계속 세그멘테이션 에러 나서
NULL체크해보니까 파일포인터가 종범이더라..
그래서 일단 fflush로 파일에 쓰고 fclose 자체를 안해버렸는데
이거 왜이러는지 아는 성님 계십니까
while(fgets(str,LINE,fp)!=NULL)
{
strcpy(str_org,str); // 온전한 형태의 한 라인
first_num+=5;
if(str[0]==' ') // 심볼이 존재하는지 아닌지 플래그 설정
symbol_flag = 0;
else
symbol_flag = 1;
num=line_tok(tok,str);
if(num==-1 || strcmp(tok[0],"END")==0) // 토크나이징되는 게 없으면 종료
{
break;
}
//opcode = 'START'
if(num>1 && strcmp(tok[1],"START")==0) // START면 첫줄 처리후 저장
{
start_num = str_to_hex(tok[2]);
strcpy(program_name,tok[0]);
fprintf(fp_lst,"%d %06X %s",first_num,location[index++],str_org);
first_num+=5;
continue;
}
else if(strcmp(tok[0],"START")==0) // START면 첫줄 처리후 저장
{
start_num = str_to_hex(tok[1]);
fprintf(fp_lst,"%d %06X %s",first_num,location[index++],str_org);
first_num+=5;
continue;
}
//write header record
if(!header_flag)
{
fprintf(fp_obj,"H%-6s%06X%06X\n",program_name,location[0],program_length);
header_flag=1;
fflush(fp_obj);
}
}
//fclose(fp_obj);
fclose(fp);
fclose(fp_lst);
if(fp_obj!=NULL)
{
fclose(fp_obj);
}
return 0;
fp_obj라는걸 굵은글씨 있는곳에서 밖에 안쓰는데 왜이러지..
한 함수에서 "w"형으로 두개 파일 열면 저럼?
댓글 0