柔性数组(0长数组)
运用情况
在一个结构体中,通常我们会发送一些固定的内容,例如两个人发消息,每次发送的字数不一定,有时多,有时少,我们定义msg字符串时,就不知道定义多少,这时候使用柔性数组
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct node
{
int a;
float b;
char c;
char msg[0]; //柔性数组
};
int main()
{
char buf[100];
fgets(buf, 100, stdin);
int n = strlen(buf) + 1;
struct node *p = malloc(sizeof(struct node) + n); //创建了一个结构体加上要发送的字符串长度的空间
strcoy(p->msg, buf);
printf("size of struct: %s\n",sizeof(struct node) + n);
printf("msg: %s\n",p->msg);
return 0;
}