[완료]파일안의 내용을 지울때 파일크기 문제요.
글쓴이: avanwz / 작성시간: 목, 2010/04/01 - 1:51오후
지금 만들고있는 프로그램에서 막혔는데 제가 원하는건 파일안의 내용을 편집하는것이거든요
(0만 골라 지우기)
예를들면 파일안의 내용이 12340면 0을 지워서 1234로 만든느거죠
그래서 어떻게했냐면 문자하나하나를 읽어서 '0'이 면 "\0"을 overwrite하고 아니면 다음문자를
읽는방식으로 했습니다. 결과적으로 파일이 편집된후 출력하면 원하는 결과물이 나오는데요
문제는 파일크기는 변함이 없다는 것입니다. 아마 제가 "\0"을 사용해서 화면에 표시만 안되는것 뿐이지
크기는 변하지 않는것 같은데요. 저는 파일크기까지 바꾸고 싶거든요.
파일을 새로 복사하지않고 어떻게 하는방법이 없을까요?
아래는 제 프로그램의 한 부분 입니다.
int length, length2;
num = open("a.dat", 2)
length = lseek(num, 0, 2); // Initial length
lseek(num, 2, 0); // editing
write(num, "\0", 1);
length2 = lseek(num, 0, 2); // Final length
close(num);
질문의 요지는 파일을 통째로 메모리에 읽어서 편집한다음 다시 파일을 생성하여 옮기는 방법외에는 없는건가요?
-- 역시 내용을 읽고 편집한다음 다시 전부다 기록하는방법밖에는 없군요.
Forums:
"\0"이 자리를
"\0"이 자리를 차지하고 있으니까 그냥 null 문자열인 ""를 쓰시면 되지 않을까요?
굳이 \0을 쓰는 이유가 있나요?
--------------------------
피할 수 있을때 즐겨라!
http://snowall.tistory.com
피할 수 있을때 즐겨라! http://melotopia.net/b
\0 이나 "" 이나 NULL
\0 이나 "" 이나 NULL 이나... 해당 공간에 써준다는 것은 용량을 줄이지 못합니다.
읽고 다시 써주세요 =.=
댓글 달기