首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c中的 动态数组 与进阶的 结构体动态创建 有关问题

2013-10-13 
c中的 动态数组 与进阶的 结构体动态创建 问题struct sample1{//定义结构体变量,并分配64组char tabname[6

c中的 动态数组 与进阶的 结构体动态创建 问题
struct sample1
{//定义结构体变量,并分配64组
char tabname[64];
char value[64];
char expression[64];
};
struct sample1 a[256] = {NULL};   //初始化为0

char colname[4096] = "";
char value[4096] = "";
.....                                      //赋值a[i].tabname,a[i].value的过程
.....                                      //
.....                                      //
for(int i = 0; i < n; i++)                 //字符串拼接
{
strcat(colname, a[i].colname);
strcat(colname, ",");
strcat(value, "'");
strcat(value, a[i].value);
strcat(value, "',");
}

这是我程序的大致结构。
1、由于定义的char数组为4096太多了,我想将其优化为动态数组,我看用malloc和free可实现。
网上的例子都将colname = (char*)malloc(n1 * sizeof(char));中的n1当成已知量,而我的n1是变量,每次循环大小不一样,能否贴个类似的例子给我参考下
2、如何将结构体定义的struct sample1 a[256]也设置成动态内存,而不是固定的256组? c 结构体 动态内存
[解决办法]
都是可以动态分配的,n1可以是变量,可以:


colname = (char*)malloc(n1 * sizeof(char));
...
a = (struct sample1*)malloc(n2 * sizeof(struct sample1));


引用:
struct sample1
{//定义结构体变量,并分配64组
char tabname[64];
char value[64];
char expression[64];
};
struct sample1 a[256] = {NULL};   //初始化为0

char colname[4096] = "";
char value[4096] = "";
.....                                      //赋值a[i].tabname,a[i].value的过程
.....                                      //
.....                                      //
for(int i = 0; i < n; i++)                 //字符串拼接
{
strcat(colname, a[i].colname);
strcat(colname, ",");
strcat(value, "'");
strcat(value, a[i].value);
strcat(value, "',");
}

这是我程序的大致结构。
1、由于定义的char数组为4096太多了,我想将其优化为动态数组,我看用malloc和free可实现。
网上的例子都将colname = (char*)malloc(n1 * sizeof(char));中的n1当成已知量,而我的n1是变量,每次循环大小不一样,能否贴个类似的例子给我参考下
2、如何将结构体定义的struct sample1 a[256]也设置成动态内存,而不是固定的256组?

[解决办法]
可以是动态的阿!这就是处理动态数据的一个比较好的办法阿!
你只要你传进去对应的需要分配的参数的实际大小就好了!

热点排行