| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 772 人关注过本帖
标题:提取结构体中的数据出错.
只看楼主 加入收藏
youc
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2004-5-5
收藏
 问题点数:0 回复次数:6 
提取结构体中的数据出错.

有下面这段代码,是输入提取结构体中的数据,可是老提示 [Warning] passing arg 1 of `strcmp' makes pointer from integer without a cast 请哪位大虾帮忙
#include<stdio.h>
#include<string.h>

char line_name;
float line_A;
float line_d;
double line_Tp;
float line_G;
float line_E;
double line_alf;
/******** 导线参数表************/
struct pick
{ char name[12];
float line_A;
float line_d;
double line_Tp;
float line_G;
float line_E;
double line_alf;
}pick_lin[5]={{"GJ-35" ,37.15 ,7.8 ,45472,318.2,181423,11.5e-6},
{"GJ-50" ,49.46 ,9.0 ,53317.9,423.7,181423,11.5e-6},
{"LGJ-70/10" ,79.39 ,11.4 ,23390,275.2,79000 ,19.1e-6},
{"LGJ-70/40" ,110.40,13.60,58300,511.3,105000,15.3e-6},

};
/*导线选取函数 */
void fun_picklin(struct pick *p)
{
char ch;
int i,j;
printf("\n");
printf("/*------请输入计算导线型号(如GJ-50或LGJ-120/20): ");
scanf("%s",ch);
for(i=0,j=0;i<=30;i++)
{ if(strcmp(ch,p[i].name)==0)
{ line_name=ch;
line_A=p[i].line_A;
line_d=p[i].line_d;
line_Tp=p[i].line_Tp;
line_G=p[i].line_G;
line_E=p[i].line_E;
line_alf=p[i].line_alf;
j=1;
}
}
if(j==0) printf("\n没有找到你所输入的导线型号\n");
printf("%s,%f,%f,%f,%f,%f,%f",line_name,line_A,line_d,line_Tp,line_G,line_E,line_alf);
}
int main(void)
{ fun_picklin(pick_lin);
return 0;
}

搜索更多相关主题的帖子: 结构体中 line float 数据 double 
2007-05-01 23:35
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
看了你的代码一下,发现里面有非常多的错误,
char ch; 定义了ch是一个字符变量,可是你在 scanf("%s",ch);中却当成了一个字符指针(字符数组)去使用,这回造成内存混乱等等非常严重的后果

至于你说的[Warning],其实也是因为没弄清楚指针的概念造成的。
这是strcmp函数的原型 int strcmp(char*,char*);

可以看出函数要求传递的是两个字符指针进来,可是你却传递的是两个字符变量,所以产生了以上的警告:
[警告]在给strcmp函数传递指针参数时传递了没有经过强制转换的整数

淘宝杜琨
2007-05-02 01:04
youc
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2004-5-5
收藏
得分:0 

谢谢楼上的指点。
我进行了以下更正:(1),char *ch;(2)char *line_name;
这样编译也通过了,可是一运行还是提示“系统发生了一个重大问题”,我想问题还是出在 int strcmp(char*,char*);在这里怎么把第二个p[i].name也变为char*的形式呢。还请多指教,谢谢


QQ:53469192 交个朋友!!!!
2007-05-02 08:44
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
void fun_picklin(struct pick *p)
{
char ch;
int i,j;
printf("\n");
printf("/*------请输入计算导线型号(如GJ-50或LGJ-120/20): ");
scanf("%s",ch);//类型不一致,以后的操作就是错误的.
for(i=0,j=0;i<=30;i++)//越界
{ if(strcmp(ch,p[i].name)==0)//
{ line_name=ch;//不能对字符串整体赋值,用strcpy().
line_A=p[i].line_A;
line_d=p[i].line_d;
line_Tp=p[i].line_Tp;
line_G=p[i].line_G;
line_E=p[i].line_E;
line_alf=p[i].line_alf;
j=1;//加个break;跳出.
}
}

倚天照海花无数,流水高山心自知。
2007-05-02 09:16
youc
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2004-5-5
收藏
得分:0 

以上的错误更改后,还是不行,再帮忙看看吧。谢谢
#include<stdio.h>
#include<string.h>

char *line_name;
float line_A;
float line_d;
double line_Tp;
float line_G;
float line_E;
double line_alf;
/******** 导线参数表************/
struct pick
{ char name[12];
float line_A;
float line_d;
double line_Tp;
float line_G;
float line_E;
double line_alf;
}pick_lin[5]={{"GJ-35" ,37.15 ,7.8 ,45472,318.2,181423,11.5e-6},
{"GJ-50" ,49.46 ,9.0 ,53317.9,423.7,181423,11.5e-6},
{"LGJ-70/10" ,79.39 ,11.4 ,23390,275.2,79000 ,19.1e-6},
{"LGJ-70/40" ,110.40,13.60,58300,511.3,105000,15.3e-6},

};
/*导线选取函数 */
void fun_picklin(struct pick *p)
{
char *ch;
int i,j;
printf("\n");
printf("/*------请输入计算导线型号(如GJ-50或LGJ-120/20): ");
scanf("%s",ch);
for(i=0,j=0;i<=5;i++)
{ if(strcmp(ch,p[i].name)==0)
{ strcpy(line_name,ch);
line_A=p[i].line_A;
line_d=p[i].line_d;
line_Tp=p[i].line_Tp;
line_G=p[i].line_G;
line_E=p[i].line_E;
line_alf=p[i].line_alf;
j=1;
break;
}
}
if(j==0) printf("\n没有找到你所输入的导线型号\n");
printf("%s,%f,%f,%f,%f,%f,%f",line_name,line_A,line_d,line_Tp,line_G,line_E,line_alf);
}
int main(void)
{ fun_picklin(pick_lin);
return 0;
}


QQ:53469192 交个朋友!!!!
2007-05-02 09:24
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#include<string.h>

char line_name[30];//要分配空间,下同.
float line_A;
float line_d;
double line_Tp;
float line_G;
float line_E;
double line_alf;
/******** 导线参数表************/
struct pick
{ char name[12];
float line_A;
float line_d;
double line_Tp;
float line_G;
float line_E;
double line_alf;
}pick_lin[5]={{"GJ-35" ,37.15 ,7.8 ,45472,318.2,181423,11.5e-6},
{"GJ-50" ,49.46 ,9.0 ,53317.9,423.7,181423,11.5e-6},
{"LGJ-70/10" ,79.39 ,11.4 ,23390,275.2,79000 ,19.1e-6},
{"LGJ-70/40" ,110.40,13.60,58300,511.3,105000,15.3e-6},

};
/*导线选取函数 */
void fun_picklin(struct pick *p)
{
char ch[30];
int i,j;
printf("\n");
printf("/*------请输入计算导线型号(如GJ-50或LGJ-120/20):");
scanf("%s",ch);
for(i=0,j=0;i<=5;i++)
{ if(strcmp(ch,p[i].name)==0)
{ strcpy(line_name,ch);
line_A=p[i].line_A;
line_d=p[i].line_d;
line_Tp=p[i].line_Tp;
line_G=p[i].line_G;
line_E=p[i].line_E;
line_alf=p[i].line_alf;
j=1;
break;
}
}
if(j==0) printf("\n没有找到你所输入的导线型号\n");
printf("%s,%f,%f,%f,%f,%f,%f",line_name,line_A,line_d,line_Tp,line_G,line_E,line_alf);
}
int main(void)
{ fun_picklin(pick_lin);
//getch();
return 0;
}


倚天照海花无数,流水高山心自知。
2007-05-02 09:46
youc
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2004-5-5
收藏
得分:0 
真是太感谢了,问题解决了。再次感谢

QQ:53469192 交个朋友!!!!
2007-05-02 09:56
快速回复:提取结构体中的数据出错.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020173 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved