2013-04-10 3 views
1

서버/클라이언트 응용 프로그램에서 작업 중입니다. 모든 활성 클라이언트의 정보를 "Information.txt"라는 텍스트 파일로 유지하려고합니다. 매 3 년마다이 텍스트 파일을 업데이트합니다. 그래서, 나는 파일을 지우지 않고 매 3 초마다 모든 내용을 지우고 싶다. 할 방법이 있습니까? :( 나는) (freopen을 사용하지 않습니다.텍스트 파일의 내용을 지우십시오.

+1

대신'fopen'을 사용 하시겠습니까? –

+0

예, fopen을 사용하는 것은 문제가 아닙니다 :) freopen()을 사용하고 싶지 않습니다. – Ayse

+1

"w"로 닫고여십시오. 오히려 "w +" –

답변

1

하면 fopen (파일 이름, 플래그)

플래그를 사용하여 파일을 엽니 = "w"또는 "WB와 시도 "지워지고 지워질 것입니다.

+0

기쁘다! 하루 종일 인터넷을 통해 물건을 검색하고 몇 분 안에 문제를 해결했습니다. 고맙습니다. :) – Ayse

+0

하지만 "w"플래그가있는 파일을 열면이 파일의 데이터를 버퍼로 읽을 수 없습니다. :(이유가 무엇일까요? :( – Ayse

+1

열 때 모든 데이터가 지워집니다. http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html –

3

주기적으로 파일을 지우는 문제는 파일이 지워졌지만 쓰여지기 전에 프로세스가 충돌 할 경우 데이터가 손실된다는 것입니다. 이전 데이터는 사라졌지만 새 데이터 아직 없어요.

이 문제에 대한 일반적인 접근 방법은 새 파일을 작성한 후 작성한 다음 새 파일을 이전 파일로 바꾸는 것입니다. 이렇게하면 항상 파일이 생기고 때로는 (아주 짧은 기간 동안) 두 개의 파일이 있습니다.

1

그냥 fopen으로 파일을 열고

fopen man page

w 자르기 파일에서 길이가 0 + 또는 WB 승 또는 에 플래그를 설정 또는 쓰기를위한 텍스트 파일을 만들 수 있습니다. 스트림은 파일의 시작 부분에 배치됩니다.

w 읽기와 쓰기에 대한 +

를 엽니 다. 이 없으면 파일이 생성되고, 그렇지 않으면 잘립니다. 스트림은 파일의 시작 부분에 에 위치합니다.

관련 문제