리눅스 fputs 관련하여 질문 하나 드립니다

tlling의 이미지


아래와 같은 함수를 이용하여 TXT 파일의 내용 2개를 하나로 붙이려고 합니다..

fileRW(fp , fw);

void fileRW(FILE *temp, FILE *fw)
{
char buf[1024];

memset(buf,0,1024);
while(fgets(buf, sizeof(buf), temp) != NULL)
{

fputs(buf, fw);

}
}

처음 150개 가량의 txt 파일은 잘 합쳐집니다.. 그런데 그 이후로 계속 세그멘테이션 오류가 납니다

GDB를 이용해 보니 fputs 부분이 틀렸다고 나옵니다.그래서 버퍼 문제인가 싶어서 버퍼나 이런거 다 memset을 이용해 0으로 해도

변함없이 오류가 납니다.해결 방법이 없을까요?ㅜ

yhsuk의 이미지

한 줄이 1024 bytes를 넘어가는 게 있나 본데요?
1024 bytes를 buf에 모두 채워서 '\0'로 끝나지 않게 되서 fputs실패~ 이런게 아닐까 합니다.

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"