C++ 에서 파일 자르기

exsider의 이미지

예를 들어 100 바이트 짜리 파일이 있을 때 이걸 뒷부분을 삭제해서
50 바이트로 만들려고 할 때 C++에서 어떻게 하나요???

라이브러리 책을 봐도 파일에서 읽거나 쓰는 기능만 있고 파일의 내용을
삭제하는 건 없네요.
무식하게 파일을 0으로 만든다음 50바이트만 써넣는 방법도 있겠지만
좀더 효율적인 방법을 찾고 싶습니다.
혹시 EOF 를 특정 위치에 쓴다던가 하는 방법없을까요???

lkjt의 이미지

그런데..

EOF를 특정위치에 써버리면...

뒤엣거들은 단순히 용량낭비를 하지 않을까요?..-_-;;;

문자열처럼...

yundream의 이미지

exsider wrote:
예를 들어 100 바이트 짜리 파일이 있을 때 이걸 뒷부분을 삭제해서
50 바이트로 만들려고 할 때 C++에서 어떻게 하나요???

라이브러리 책을 봐도 파일에서 읽거나 쓰는 기능만 있고 파일의 내용을
삭제하는 건 없네요.
무식하게 파일을 0으로 만든다음 50바이트만 써넣는 방법도 있겠지만
좀더 효율적인 방법을 찾고 싶습니다.
혹시 EOF 를 특정 위치에 쓴다던가 하는 방법없을까요???

truncate(2)

exsider의 이미지

yundream wrote:

truncate(2)

답변 감사합니다.
그런데 위 함수는 unistd.h 에 있더군요. 그럼 유닉스 계열에서만 되는 것 아닌가요???

저는 플랫폼에 상관없이 사용가능한 방법(가능한한 C++ 표준에 있는 기능만 사용)을 찾고 있습니다.

체스맨의 이미지

truncate 관련 기능을 플랫폼에 상관없도록 하려면, 각 플랫폼마다 지원되는
함수를 호출하는 수 밖에 없습니다.

도스/윈도우즈에서는 chsize, 윈API SetEndOfFile 등 입니다.

Orion Project : http://orionids.org

랜덤여신의 이미지

체스맨 wrote:
truncate 관련 기능을 플랫폼에 상관없도록 하려면, 각 플랫폼마다 지원되는
함수를 호출하는 수 밖에 없습니다.

도스/윈도우즈에서는 chsize, 윈API SetEndOfFile 등 입니다.

이런 함수가 정말 있군요. 우와...

dalekang의 이미지

아직도 windows 는 posix 호환되지 않나요 ?
호환되면 ftruncate를 쓸 수 있는데 ...

언젠가 보니까 .. posix 호환시키는 방법이 있긴 하던데 ...
관심이 없어서 ...

혹시아시는 분 있으면 알려 주세요 ...

mastercho의 이미지

함수를 추상화 시켜서 내부에 각각의 플레폼에 맞는 API를 호출하는 하는 방식으로 하셔야 할거 같은데요

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

feanor의 이미지

Windows에서 POSIX 환경을 만들려면 Cygwin 까시면 됩니다.

M$에서 만든 SFU(Service For Unix)라는 것도 있긴 합니다.
http://www.microsoft.com/windows/sfu/

--feanor

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.