[초보질문] 구조체 배열 초기화 및 크기 구하기

zaru의 이미지

typedef struct tagINFO {
    char sType[5];
    char sDim[10];
} INTO;

INFO info[20];


typedef struct tagCOMMAND {
    BYTE xbuf[BUF_LEN];
    BYTE ybuf[BUF_LEN];
    char x[10];
    char x[10];
} COMMAND;

COMMAND cmd[size];

가 전역으로 선언 됐을때 0으로 초기화 하는 방법과 크기 구하는 법을 알고 싶습니다.
그리고, 위 cmd[size] 에서 size를 동적(가변)으로 사용 할려면 어떻게 해야 되는지요.
memset(&info[0], 0x00, sizeof(info[0]));
memset(&cmd[0], 0x00, sizeof(cmd[0]));

초기화는 이렇게 했는데.. 맞는건가요?
Fe.head의 이미지

zaru wrote:

memset(&info[0], 0x00, sizeof(info[0]));
memset(&cmd[0], 0x00, sizeof(cmd[0]));

초기화는 이렇게 했는데.. 맞는건가요?

memset(info, 0x00, sizeof(info));
memset(cmd, 0x00, sizeof(cmd));

이렇게 하세요.

bzero(info, sizeof(info));
bzero(cmd, sizeof(cmd));

도 됩니다.

COMMAND cmd[size]; 를 가변으로 하실려면

cmd를 포인터로 선언해야 하고

메모리 할당(malloc or calloc) 하고
다 쓴후에 메모리 해제(free)를 해야 합니다.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

cppig1995의 이미지

bzero 는 현재는 쓰이지 않는 구식 함수로서,
.
.
.
memset 짱! (-_-)

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

sangwoo의 이미지

cppig1995 wrote:
bzero 는 현재는 쓰이지 않는 구식 함수로서,
.
.
.
memset 짱! (-_-)

bzero가 왜 구식 함수인가요? POSIX랑 C99에도 들어 있는 걸로
알고 있습니다만. 뭐 구현이야 memset과 다를 바가 없겠지만요.

----
Let's shut up and code.

kihongss의 이미지

zaru wrote:
typedef struct tagINFO {
    char sType[5];
    char sDim[10];
} INTO;

INFO info[20];


typedef struct tagCOMMAND {
    BYTE xbuf[BUF_LEN];
    BYTE ybuf[BUF_LEN];
    char x[10];
    char x[10];
} COMMAND;

COMMAND cmd[size];

가 전역으로 선언 됐을때 0으로 초기화 하는 방법과 크기 구하는 법을 알고 싶습니다.
그리고, 위 cmd[size] 에서 size를 동적(가변)으로 사용 할려면 어떻게 해야 되는지요.
memset(&info[0], 0x00, sizeof(info[0]));
memset(&cmd[0], 0x00, sizeof(cmd[0]));

초기화는 이렇게 했는데.. 맞는건가요?

이런식으로도 됩니다.

...
INFO info[20] = {0,};
....
COMMAND cmd[size] = {0,};
....
kjw7945의 이미지

초기화는 memset으로 혹은..

위엣분이 쓰셨듯이..

선언시에 초기화도 가능합니다.

변수를..........

가변으로 쓰고 싶으시다면 배열로 선언하지 마시고

포인터로 선언하세요. 그 후에 malloc, realloc이라든지..

함수를 이용하시면 됩니다.

-----

함수 쓰는 법은 man page에...
^^

___________________

Open Your Eyes
All of things in man page...
From Linux User

cinsk의 이미지

sangwoo wrote:

bzero가 왜 구식 함수인가요? POSIX랑 C99에도 들어 있는 걸로
알고 있습니다만. 뭐 구현이야 memset과 다를 바가 없겠지만요.

bzero는 구 POSIX.1로 알려진 Single UNIX Spec에서 legacy (구식)으로 등록된 함수입니다. 나중에 없어질 수 있다고 씌여 있으며, C99에서는 bzero에 대한 언급이 없습니다.

bzero는 원래 BSD 계열에서 써 왔던 함수로, 특히 network 프로그래밍에 자주 쓰였지만, 쓰지 않는 것이 좋습니다. 이 계열의 모든 함수는 C99 표준 함수인 memset으로 대체될 수 있으며, 이와 비슷한 함수로는 bcmp, bcopy 등이 있습니다.

댓글 달기

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