배열연산이요.

samdochen의 이미지

안녕하세요.. 허접질문... 헤~~

예를 들어..구조체가 있고, 파일이 있습니다.파일은 데이터가 바이너리로 되어있구요...

struct bae{
unsigned char a[2];
unsigned char b;
}BAE;
BAE baeinfo;
main()
{
fp = fopen("data.dat",w);
for(i=0; i<10; i++)
{
baeinfo.a[2]=fgetc(fp);
baeinfo.b=fgetc(fp);
}
fclose(fp);
}

이랬을때...
바이너리로 되어있는 파일을 확인할수 있게 텍스트로 바꾸면..
한 레코드당
00001 01
이렇게 데이타를 넣거든요..
그런데, 그냥 맴버 변수에는 값이 제대로 들어가는것 같은데.
배열로 선언해놓은거에는 값이 제대로 들어가지 않는것 같아요..
2바이트니깐 short int사용하면 되는데. 굳이 char[2]이렇게 하는이유는.
제가 쓰는 컴파일에선 short int가 무시되서.. 그래서 그러는데..
어떻게 하면 값이 제대로 들어갈까요??
바이너리 값을 불러오는거라서 더욱 헷갈려요..
아직 허접이라...많이 모릅니다.
고수님들.. 많은 답변 부탁드립니다..
서지훈의 이미지

악기와깡다구 wrote:
안녕하세요.. 허접질문... 헤~~

예를 들어..구조체가 있고, 파일이 있습니다.파일은 데이터가 바이너리로 되어있구요...

struct bae{
unsigned char a[2];
unsigned char b;
}BAE;
BAE baeinfo;
main()
{
fp = fopen("data.dat",w);
for(i=0; i<10; i++)
{
baeinfo.a[2]=fgetc(fp);
baeinfo.b=fgetc(fp);
}
fclose(fp);
}

이랬을때...
바이너리로 되어있는 파일을 확인할수 있게 텍스트로 바꾸면..
한 레코드당
00001 01
이렇게 데이타를 넣거든요..
그런데, 그냥 맴버 변수에는 값이 제대로 들어가는것 같은데.
배열로 선언해놓은거에는 값이 제대로 들어가지 않는것 같아요..
2바이트니깐 short int사용하면 되는데. 굳이 char[2]이렇게 하는이유는.
제가 쓰는 컴파일에선 short int가 무시되서.. 그래서 그러는데..
어떻게 하면 값이 제대로 들어갈까요??
바이너리 값을 불러오는거라서 더욱 헷갈려요..
아직 허접이라...많이 모릅니다.
고수님들.. 많은 답변 부탁드립니다..

위에 있는 코드가 뭘 하기 위한 건지?
만약 저 코드로 뭔가를 하길 원하신다면...-_-ㅋ
일단 서점에 가서 간단한 21일 완성 한 권 보시고 시작하세요...
뭘 할려는 코드인지 이해가 전혀...-_-ㅋ
물론 여러가지를 생략을 한 코드 같기는 하지만...-_-ㅋ
그래도...?

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

세벌의 이미지

소스코드 들여쓰기부터 보기 편하게 하세요. 그렇게 들여쓰기 하나도 안 하면 본인이나 타인이나 코드 분석하기 어려워 집니다.

http//wiki.kldp.org/wiki.php/RTFM

samdochen의 이미지

죄송... 질문이나 코드가 너무 추상적이었군요..
목적은, 파일에 있는 내용을 구조체에 다시 로드 하려 하는 것입니다.
답변감사합니다.

서지훈의 이미지

악기와깡다구 wrote:
죄송... 질문이나 코드가 너무 추상적이었군요..
목적은, 파일에 있는 내용을 구조체에 다시 로드 하려 하는 것입니다.
답변감사합니다.

그럼...write()로 구조체를 파일에 썼으면..
같은 구조체로 read() 로 읽어 오면은 그대로 사용이 가능합니다...
시스템 호환에 문제가 없다면...
있다면...
적당히 처리를...-__-ㅋ

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

최병현의 이미지

악기와깡다구 wrote:
예를 들어..구조체가 있고, 파일이 있습니다.파일은 데이터가 바이너리로 되어있구요...
struct bae{
unsigned char a[2];
unsigned char b;
}BAE;
BAE baeinfo;
main()
{
fp = fopen("data.dat",w);
for(i=0; i<10; i++)
{
baeinfo.a[2]=fgetc(fp);
baeinfo.b=fgetc(fp);
}
fclose(fp);
}


이런 말씀드리기에는 정말 죄송합니다만,
위의 코드는 설명을 위해 임시로 작성한 것처럼 보입니다.
악기와깡다구 wrote:
바이너리 값을 불러오는거라서 더욱 헷갈려요..
아직 허접이라...많이 모릅니다.
고수님들.. 많은 답변 부탁드립니다..

데이터가 바이너리로 저장되어 있다면,
앞서 서지훈님께서 지적하신 것 처럼 하시고 동일한 시스템 구조에서 사용한다는 가정을 한다면 아무런 문제는 없을 것으로 생각됩니다.

To be a rich

samdochen의 이미지

답변 감사드립니다... 섣불리 질문을 올려서..
많은 질책들이...^^;;;
말씀하신데로 코드도 설명을 위해 임시로 작성하고..
다음부터 좀더 신중히 질문 올려야하겠네요...^^

댓글 달기

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