typedef struct DataParam
{
int number; //记录参数个数
char paramName1[20];
char paramNumber1[20]; char paramName2[20];
char paramNumber2[20]; char paramName3[20];
char paramNumber3[20]; char paramName4[20];
char paramNumber4[20]; char paramName5[20];
char paramNumber5[20];
}data_param;定义结构体data_param param1;
怎么通过for语句遍历结构体下面的paramName参数?
下面这样是不行的:
int i = 1;
char str[20] = {0};
sprintf(str,"%s%d","paramName",i);
取得时候param1.(str)、param1.str都会报错。求教怎么做?
{
int number; //记录参数个数
char paramName1[20];
char paramNumber1[20]; char paramName2[20];
char paramNumber2[20]; char paramName3[20];
char paramNumber3[20]; char paramName4[20];
char paramNumber4[20]; char paramName5[20];
char paramNumber5[20];
}data_param;定义结构体data_param param1;
怎么通过for语句遍历结构体下面的paramName参数?
下面这样是不行的:
int i = 1;
char str[20] = {0};
sprintf(str,"%s%d","paramName",i);
取得时候param1.(str)、param1.str都会报错。求教怎么做?
param1.paramName2
............
PS:有个变通的方法 你定义个指针char *p = param1.paramName1 因为你里面字串长度都是一样的
你就可以一个for里面p = p+ (i*20)这样跳过paramNumber都是取paramName字段...
char str[20] = {0};for(i=0;i<100;i++)
{
sprintf(str,"%s%d",param[i].paramName1,i);
}
真快
我是说结构体里面的
char paramName1[20];
char paramNumber1[20];
有100个
如果结构体里面的
char paramName1[20];
char paramNumber1[20];
有100个
定义指针大小不好确定,不好操作文件。
如果结构体里面的
char paramName1[20];
char paramNumber1[20];
有100个
定义指针大小不好确定,不好操作文件。只要每个paramNumber一样大(也就是paramName之间的间隔一样大)就行啊 而且你那种拼接是不可能编译的过的...
如果结构体里面的
char paramName1[20];
char paramNumber1[20];
有100个
定义指针大小不好确定,不好操作文件。只要每个paramNumber一样大(也就是paramName之间的间隔一样大)就行啊 而且你那种拼接是不可能编译的过的...就是参数名称和参数值,都是客户端用户定义的,大小是控制不了的
{
int number; //记录参数个数
char paramName[100][20];
char paramNumber[100][20];
}data_param;data_param param
sprintf(str,"%s%d",param.paramName[i],i);
{
char paramName[20];
char paramNumber[20];
}MyType;typedef struct DataParam
{
int number; //记录参数个数
MyType data[100];
}data_param;data_param param
sprintf(str,"%s%d",param.data[i].paramName,i);
如果结构体里面的
char paramName1[20];
char paramNumber1[20];
有100个
定义指针大小不好确定,不好操作文件。只要每个paramNumber一样大(也就是paramName之间的间隔一样大)就行啊 而且你那种拼接是不可能编译的过的...就是参数名称和参数值,都是客户端用户定义的,大小是控制不了的那你死心吧 只有老老实实一个个取...
{
int number; //记录参数个数
char paramName1[20];
char paramNumber1[20];char paramName2[20];
char paramNumber2[20];char paramName3[20];
char paramNumber3[20];char paramName4[20];
char paramNumber4[20];char paramName5[20];
char paramNumber5[20];
}data_param;int i = 1;
char str[20] = {0};
char *p=param1.paramName1;
for(i=0;i<100;i++)
sprintf(str,"%s%d",p+i,i);
sprintf(str,"%s%d",p+i*40,i);
{ //记录参数个数
char paramName1[20];
char paramNumber1[20];
} tagDataParam;typedef strucgt DataParamArry
{
int tagNum;
tagDataParam dataArry[1];//因为是变长, 这里只申请一个.
}tagDataParamArry;现在, 如果你想有100 tagDataParam怎么做呢?
代码如下:tagDataParamArry *pDatas = (tagDataParamArry *)malloc(100*sizeof(tagDataParam)+sizeof(int)); //100个tagDataParam和1个int的空间.然后使用的时候就是这样了.pDatas->tagNum = 100;pDatas->dataArry[i].paramName1 = 0; //i是数组索引
pDatas->dataArry[i].paramNumber1 = 0;
pDatas->dataArry[i].paramNumber1 = 0;这里语法有问题, 注意红色部分是字符数组, 我这里用错了, 注意纠正.