2012-10-26 9 views
-1

읽고 파일에 쓸 필요가 있습니다. 어쨌든 완전히 덮어 쓰기 때문에 "r +"을 사용하고 싶지 않습니다. 그러나 파일을 완전히 닫을 수 없습니다. 두 번째로 파일을 열려고하면 응용 프로그램이 충돌합니다 (열 수 없음). 누구든지 파일을 완전히 닫는 방법을 알고 있습니까?C로 파일을 완전히 닫으십시오.

FILE* f; 
fopen_s(&f, "test.txt", "r"); 
// read file and edit data 
fclose(f); 
f = 0; 
fopen_s(&f, "test.txt", "w"); 
fprintf(f, "%c", data); 
fclose(f); 
+0

내게 불명확한데 왜 파일을 닫을 수 없습니까? 읽으려고하는 중, 읽지 않은 곳에서 글을 쓰고 있습니까? – Mike

+1

'fopen_s()'무엇입니까 ??? 표준 함수 ['fopen()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html)를 사용하면 작업이 성공했는지 확인하기 위해 반환 값을 테스트 할 수 있습니다. 그렇지 않으면 오류를보고합니다 (함수 ['perror()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/perror.html)). – pmg

+0

나는 그것이 fopen의 안전한 버전이라고 생각한다! – trumpetlicks

답변

2

fclose()이 파일을 닫습니다 :

는 그리고 이것은 실제로 코드, 내가하고 싶은 것을 단지 요약 아니다. 그것은 절반을 닫지 않습니다. 파일을 "완전히 닫는"개념은 존재하지 않습니다. 파일이 열려 있거나 닫혔습니다. 중간에는 없습니다.

코드에는 fopen_s()을 사용하여 파일을 열었습니다. 나는 그 기능이 무엇인지 전혀 모른다. 나는 fopen()처럼 작동한다고 가정하지만 FILE 포인터를 리턴하는 대신 그 인수에 대신 저장합니다.

질문에 대한 대답은 파일을 "완전히"닫으려면 fclose()을 사용하는 것입니다. 당신이 이미하는 것처럼. 그것은 당신이 다른 곳에있는 문제를 의미합니다.

+0

http://stackoverflow.com/a/2575187/1633931! –

관련 문제