[완료]c언어 파일 사이즈 관련 질문

boss0327의 이미지

안녕하세요.

파일 사이즈 관련 궁금한 사항이 있어 이렇게 글을 올립니다.

fopen 함수를 사용해서 데이터를 계속 저장 하다가 어느 순간 데이터 저장이 끊어지면 전체 데이터 사이즈(byte)를 파일의 맨 앞부분에 넣어 주어야 합니다.

데이터 크기는 다시 fopen으로 열어서 데이터 사이즈를 얻어 올 수는 있지만 파일의 맨 앞부분에 넣어주어야 하는 부분이 궁금합니다.

좋은하루 보내세요오~

익명 사용자의 이미지

앞부분에 기록할 빈칸을 미리 만들어 놓고
그 빈칸의 값을 변경하면
파일 사이즈가 변할 일은 없을듯합니다.

boss0327의 이미지

빈 칸의 값을 어떻게 변경해야 할까요..ㅠㅠ

ymir의 이미지

stat 함수로 file 의 size 를 알 수 있는데, 굳이 파일에 저장을 해야 하는 이유가 있으신지..?

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

boss0327의 이미지

아... 지금 DVR을 제작중에 avi 포맷이 아닌 직접 파일 포맷을 만들어서 진행 중인데 뷰어를 만드는 쪽에서 데이터의 전체 사이즈를 알아야 한다고 해서요..ㅠ

ymir의 이미지

파일을 맨 처음 생성했을 때에는 길이 정보를 0 으로 먼저 저장한 후에 데이터를 쓰시다가..
fseek(fp, 0L, SEEK_SET); 을 쓰면 파일 포인터의 맨 처음으로 이동합니다.
여기에서 다시 fwrite 호출하면 됩니다. (fseek 으로 파일 포인터의 임의의 위치로 이동할 수 있습니다.)

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

boss0327의 이미지

아하!!!!!!!!!!!! fseek 함수가 이렇게 쓰이는 군요!!
감사합니다!! 얼른 해봐야겠네요!
감사합니다!

powersys의 이미지

fseek ?
이분말뜻은 그게 아닌듯한데...

이미생성된파일에.. 앞부분에 추가하고싶단얘기같군요...

결론을 말씀드리면.. 그냥 안된다고 생각하시면됩니다.^^
하지만 안되는것도 아니죠... 몇가지 방법이 있습니다..
파일을 새로만들어.. 추가내용먼저쓰고 기존파일내용 덧붙여 새파일만드는방법
또다른방법은.. 파일내용 메모리에 모두 저장해두고.. 추가내용을 메모리 앞쪽에 추가하고.. 파일을 처음부터 갱신하는방법.
대략두가지 입니다. 많은 편집기나 문서작업프로그램들이 거의 두가지 방식중하나를 쓸겁니다.
님이 생각하시는.. 파일의 기존내용을 그대로 둔체로는 거의? 불가할겁니다.

planetarium의 이미지

질문 보시면 fopen() 후에 저장할 데이터도 직접 쓰는 상황이네요. 먼저 답변해주신 분이 제대로 이해하신듯 합니다.

boss0327의 이미지

아...결국 저렇게 밖에 안되는 건가요..ㅠㅠ
저도 powersys 님이 말씀해 주신 두가지 방법을 생각 하긴 했는데... 좀더 심플하게 하는 방법은 없는 거군요..ㅠㅠㅠㅠㅠ
답변 감사합니다!!!ㅋ

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.