結構體格式如下:
struct ss_t
;需要給結構體中的msg賦值,由於msg的長度為0,直接賦值時程式提示賦值錯誤,經過處理之後,可以使用以下方式賦值:
int totallen;
int command;
char msg = "123456";
int testlen = sizeof(msg);
char *buf;
struct ss_t *st;
buf = (char *)malloc(sizeof(char) * 100);
if (buf == null)
memset(buf, 0, 100);
totallen = strlen(msg);
command = 1000;
memcpy(buf, &totallen, sizeof(short int));
memcpy(buf + sizeof(short int), &command, sizeof(short int));
memcpy(buf + 2 * sizeof(short int), msg, strlen(msg));
st = (struct ss_t *)buf;
char showres[50]=;
char showmsg[50]=;
sprintf(showres,"st->s_id %d st->len %d\n", st->totallen, st->command);
sprintf(showmsg,"st->msg %s\n", st->msg);
messageboxa(null,showres,showmsg,0);
C語言長度為0的陣列
前面在看xen 的原始碼時,遇到了一段 如下所示 注意上面最後一行的 這裡定義了乙個長度為的陣列,這種用法可以嗎?為什麼可以使用長度為 0 的陣列?長度為 的陣列到底怎麼使用?這篇文章主要針對該問題進行簡單的講解。廢話不多說了,現在就開始。長度為的陣列在標準c和 c 中是不允許的,如果使用長度為 的...
C C 中長度為0的陣列
參考文獻 近日在看專案中的框架 時,發現了了乙個奇特的語法 長度為0的陣列例如 uint8 t buf 0 我從未見過這樣的寫法,所以在網上查了查資料,了解並記錄下來.在標準的c c 中,長度為0的陣列是不被允許的,它算是乙個c c 擴充套件,如果你的編譯器支援這個擴充套件,你就可以使用它.vs系列...
gnu c 長度為0的陣列的使用
長度為的陣列在標準c和c 中是不允許的,如果使用長度為的陣列,編譯時會產生錯誤,提示陣列長度不能為。但在gnuc中,這種用法卻是合法的。它的最典型的用法就是位於陣列中的最後一項。struct description struct description thisline struct descrip...