長度為0的字元陣列的賦值

2021-06-22 12:13:55 字數 846 閱讀 6287

結構體格式如下:

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...