예를 들어 100 바이트 짜리 파일이 있을 때 이걸 뒷부분을 삭제해서 50 바이트로 만들려고 할 때 C++에서 어떻게 하나요???
라이브러리 책을 봐도 파일에서 읽거나 쓰는 기능만 있고 파일의 내용을 삭제하는 건 없네요. 무식하게 파일을 0으로 만든다음 50바이트만 써넣는 방법도 있겠지만 좀더 효율적인 방법을 찾고 싶습니다. 혹시 EOF 를 특정 위치에 쓴다던가 하는 방법없을까요???
그런데..
EOF를 특정위치에 써버리면...
뒤엣거들은 단순히 용량낭비를 하지 않을까요?..-_-;;;
문자열처럼...
예를 들어 100 바이트 짜리 파일이 있을 때 이걸 뒷부분을 삭제해서 50 바이트로 만들려고 할 때 C++에서 어떻게 하나요??? 라이브러리 책을 봐도 파일에서 읽거나 쓰는 기능만 있고 파일의 내용을 삭제하는 건 없네요. 무식하게 파일을 0으로 만든다음 50바이트만 써넣는 방법도 있겠지만 좀더 효율적인 방법을 찾고 싶습니다. 혹시 EOF 를 특정 위치에 쓴다던가 하는 방법없을까요???
truncate(2)
답변 감사합니다. 그런데 위 함수는 unistd.h 에 있더군요. 그럼 유닉스 계열에서만 되는 것 아닌가요???
저는 플랫폼에 상관없이 사용가능한 방법(가능한한 C++ 표준에 있는 기능만 사용)을 찾고 있습니다.
truncate 관련 기능을 플랫폼에 상관없도록 하려면, 각 플랫폼마다 지원되는 함수를 호출하는 수 밖에 없습니다.
도스/윈도우즈에서는 chsize, 윈API SetEndOfFile 등 입니다.
Orion Project : http://orionids.org
truncate 관련 기능을 플랫폼에 상관없도록 하려면, 각 플랫폼마다 지원되는 함수를 호출하는 수 밖에 없습니다. 도스/윈도우즈에서는 chsize, 윈API SetEndOfFile 등 입니다.
이런 함수가 정말 있군요. 우와...
----블로그 / 위키 / 리눅스 스크린샷 갤러리
아직도 windows 는 posix 호환되지 않나요 ? 호환되면 ftruncate를 쓸 수 있는데 ...
언젠가 보니까 .. posix 호환시키는 방법이 있긴 하던데 ... 관심이 없어서 ...
혹시아시는 분 있으면 알려 주세요 ...
함수를 추상화 시켜서 내부에 각각의 플레폼에 맞는 API를 호출하는 하는 방식으로 하셔야 할거 같은데요
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다. - 하비스
Windows에서 POSIX 환경을 만들려면 Cygwin 까시면 됩니다.
M$에서 만든 SFU(Service For Unix)라는 것도 있긴 합니다.http://www.microsoft.com/windows/sfu/
--feanor
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
그런데..EOF를 특정위치에 써버리면...뒤엣거들은 단순히
그런데..
EOF를 특정위치에 써버리면...
뒤엣거들은 단순히 용량낭비를 하지 않을까요?..-_-;;;
문자열처럼...
Re: C++ 에서 파일 자르기
truncate(2)
Re: C++ 에서 파일 자르기
답변 감사합니다.
그런데 위 함수는 unistd.h 에 있더군요. 그럼 유닉스 계열에서만 되는 것 아닌가요???
저는 플랫폼에 상관없이 사용가능한 방법(가능한한 C++ 표준에 있는 기능만 사용)을 찾고 있습니다.
Re: C++ 에서 파일 자르기
truncate 관련 기능을 플랫폼에 상관없도록 하려면, 각 플랫폼마다 지원되는
함수를 호출하는 수 밖에 없습니다.
도스/윈도우즈에서는 chsize, 윈API SetEndOfFile 등 입니다.
Orion Project : http://orionids.org
Re: C++ 에서 파일 자르기
이런 함수가 정말 있군요. 우와...
----
블로그 / 위키 / 리눅스 스크린샷 갤러리
그냥 궁금해서 ....
아직도 windows 는 posix 호환되지 않나요 ?
호환되면 ftruncate를 쓸 수 있는데 ...
언젠가 보니까 .. posix 호환시키는 방법이 있긴 하던데 ...
관심이 없어서 ...
혹시아시는 분 있으면 알려 주세요 ...
함수를 추상화 시켜서 내부에 각각의 플레폼에 맞는 API를 호출하는 하는
함수를 추상화 시켜서 내부에 각각의 플레폼에 맞는 API를 호출하는 하는 방식으로 하셔야 할거 같은데요
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
Windows에서 POSIX 환경을 만들려면 Cygwin 까시면 됩니다.
Windows에서 POSIX 환경을 만들려면 Cygwin 까시면 됩니다.
M$에서 만든 SFU(Service For Unix)라는 것도 있긴 합니다.
http://www.microsoft.com/windows/sfu/
--feanor
댓글 달기