零长数组一般在结构体中使用,并且放在结构体的末尾。在没有给零长数组分配空间之前是不能使用它的。
它可以根据你的数据大小变化而变化。
#include
#include
#include
struct data
{
int msglength;
char msg[0];
};
int main(int argc, char *argv)
{
char buffer[100];
struct data *mydata;
while(1)
{
printf("please input a message you want to send!\n");
scanf("%s", buffer);
mydata = malloc(sizeof(struct data)+strlen(buffer)+1);
mydata->msglength = strlen(buffer)+1;
strncpy(mydata->msg, buffer, mydata->msglength);
printf("b is %s\n", mydata->msg);
printf("lenth is %d\n", sizeof(mydata)+mydata->msglength);
}
return 0;
}