해결된 질문
작성
·
244
0
안녕하세요. 제가 텍스트 파일에 여러 실험을 해보다 의문점이 생겨 질문 드립니다.
6
Sector 7
4.6
전 해당 내용을 가진 텍스트 파일의 내용을 수정하기 위해서 해당 코드를 작성했습니다.
FILE* file = fopen(filename, "r+");
int num;
fscanf(file, "%d%*c", &num);
printf("%d\n", num);
fseek(file, 0, SEEK_CUR);
fwrite("JohnWick", 9, 1, file);
fclose(file);
기존 내용의 삭제 없이 수정하기 위해 r+ 옵션을 사용하고 한번씩 파일에서 입, 출력을 실행했습니다. 해당 코드는 잘 작동했으나 fseek() 함수를 사용하지 않을시 에러가 발생했습니다.
제가 사용한 fseek(file, 0, SEEK_CUR); 은 file 포인터 위치를 현재 위치에 그대로 두는, 사실상 의미가 없는 과정인데 어째서 이런 결과가 나오는 것인지 알고 싶습니다. 답변 부탁드립니다.
답변 1
0
새로 넣은 코드로 인해 결과가 달라졌는데도 불구하고 '사실상 의미가 없는 과정'이라고 단언하실 수 있는 근거를 찾으셔야겠지요.
코드를 봤을 때 fscanf가 'CUR'(커서)를 옮기는 것은 아닐까라고 추측을 해볼 수 있을 것 같습니다.
이유를 찾았습니다. 답변 감사드립니다.