2011-01-20 3 views
0

텍스트 파일이 있습니다. C에서 파일의 마지막 줄만 삭제하려면 어떻게해야합니까?C를 사용하여 ASCII 텍스트 파일의 마지막 줄만 삭제하는 방법?

감사합니다. John.

+4

? 그리고/또는 귀하의 숙제에 대한 완전한 신용을 얻으려면 정확히 무엇이 필요합니까? –

+1

나는 EOF를 찾고 다음 새 줄 문자로 돌아가려고 노력했다. 그리고 LOL @ 당신의 암시는 HW입니다. 관심을 가져 주셔서 감사합니다.하지만 저는 학생이 아닙니다. Excel에서 내보내기 작업이 끝날 때 새 줄 문자를 추가 할 때 텍스트 파일의 마지막 레코드를 삭제해야합니다. – John

답변

6

일반 ANSI C는 파일 크기를 줄이기위한 표준 방법을 제공하지 않습니다. 표준 C에서이 작업을 수행하는 유일한 방법은 원하는 파일을 제외하고 전체 파일 내용을 새 파일에 복사하는 것입니다 생략하십시오.

또는 OS 특정 기능을 사용하여 파일을 적절한 위치에서자를 수 있습니다. 예를 들어 POSIX는 ftruncate() 함수를 제공합니다.이 함수는 파일을 주어진 길이로 줄입니다. 마지막 줄의 시작 부분을 검색 한 다음이 바로 앞에있는 파일을 자릅니다 (위치를 얻으려면 lseek() 사용). 당신이 GNU head 경우


모두의 가장 쉬운 대안은, 단지를 사용하는 것입니다

head -n -1 <file.original> file.new 
0

당신은 접근 정확합니다. Sacn은 줄 바꿈을 위해 마지막 줄을 기억하고 truncate 또는 ftruncate을 사용하십시오. How to truncate a file in C?도 참조하십시오.

HTH

마리오 당신이 시도 무엇

관련 문제