c语言结构体引用内部其他成员。

c语言结构体引用内部其他成员。
struct a {
int len;
char str[len]
};
想建立一个类似上边的结构体, str数组的个数由上边len的长度决定。需要怎样建立?
上边说错了,str数组个数由len的值决定
呵呵 你如果是C的话 抱歉啊,C只支持固定长度的数组,也就是庆滚说在这个程序哗差厅编译的时候,数组的长度就要指定。所以,单纯的依靠编译器,那是不行的。

不过乱隐,你可以自己来分配,这就没问题了。
这么写
struct Test {
int len;
char *buff;
void AllocateBuff() {
if (len <=0)
{
return;
}
buff = new char[len];
memset(buff,0,len);
}
};

这么用
int _tmain(int argc, _TCHAR* argv[])
{
Test t;
t.len = 10;
t.AllocateBuff();
int length = strlen(t.buff);
memcpy(t.buff,"abcd",t.len);
length = strlen(t.buff);
return 0;
}
#include
typedef struct
{
int len;
char str[100];
}a;
void main()
{
a x;
int i;
scanf("%d ",&x.len);
for(i=0;i x.str[i]=getchar();
x.str[x.len]='困雀\0'汪迟早;
printf("旦谨%s",x.str);
}
struct a{
int len;
char *str;
}
要团袭实现你的要求,应该使用这个核或余结构体。 声明结构体之后,给len赋值并给str指针malloc一段长度为len的控改滚件即可。如下。
int new_a(int len, struct *st_a)
{
if(len < 0)
return -1;
st_a->len = len;
if((st_a->str = (char *)malloc(sizeof(char)*st_a->len)) == NULL)
return -1;
return 0;
}

int main()
{
struct a st_a;
if(new_a(12, &st_a) < 0)
return -1;
return 0;
}
← 上一篇: 下一篇: →