[완료] [C 언어] 파일 read write

vimania의 이미지

c 언어에서 file의 일정한 공간에 int값을 저장했다가 나중에 읽어오려고 하는데 이런 기능을 하는 라이브러리가 있나요?

제가 구현하고 싶은 것은 파일이 시작되는 부분부터 int 사이즈 만큼 (32bit)의 공간에 int 값을 저장하고 싶습니다. int 값이 1이 될수도 있고 100000 이 될 수도 있는거죠. 그리고 그 다음 16bit 공간에는 short 값을 저장하고요. 이런 방식으로 저장을 한 다음에...

나중에 언제든지 파일 시작하는부분 부터 32bit 만큼을 읽어오면 저장된 값을 알 수 있게 만들고 싶습니다.

char array 를 이용해서 fwrite함수로 file에 저장해 보니까 10000일 경우 파일에 5자리를 차지하고 1인경우 1자리를 차지하던데 이런경우 자리수가 일정하지 않아서 나중에 읽어 오기가 불가능하더라구요.

이런 기능을 하는 함수가 있나요?

file에 저장하고 그값을 불어와서 int 변수에 저장하는 방법 좀 자세히 알려주세요.

whitelazy의 이미지

그냥 바이너리로 열어서 저장하면 바이너리형태로 저장되지 않나요..?
아니면 byte단위로 짤라서 byte로 저장한다음에 byte로 읽어서 재조립해서 int로 사용하시는방법도 있습니다...

M.W.Park의 이미지

binary mode를 사용해서 r/w를 하세요. ^^;
-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

vimania의 이미지

번개같은 답글 감사드립니다.

fopen 할때 r+b 모드로 하라는 말씀 이신가요?

그렇다면 int a = 3 이라면 바이너리로 0...0000000000011 (32자리) 일텐데 이걸 어떤 식으로 파일에 저장하면 되나요?

vimania의 이미지

책을 찾아보니까

size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream)

이라고 나와있는데

여기서 *ptr 를
int * ptr; 로 선언하고
ptr = a; 한다음에
fwrite (ptr, sizeof(int), 1, fp);
라고 하면 binary로 들어가는 건가요?

netionics의 이미지

int main(void)
{
  int a, b;
  FILE *fp;
 
  a = 100;
 
  fp = fopen("data", "wb");
  fwrite(&a, sizeof(a), 1, fp);
  fclose(fp);
 
  fp = fopen("data", "rb");
  fread(&b, sizeof(b), 1, fp);
  fclose(fp);
 
  printf("a: %d, b: %d\n", a, b);
 
  return 0;
} 

:)

vimania의 이미지

저는 fwrite 또는 fread 의 첫번째 argument가 항상 array여야만 하는줄 알았습니다.
&a 이런식으로도 들어갈 수 있군요.

좋은 답변 감사합니다.

댓글 달기

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