帮忙看看是哪里错了

blovegirl 2004-11-12 09:02:45
struct strFileinfo
{
char strFilename[30];
char strTradename[5];
char strChinesename[50];

int inti;

struct strFileinfo *next;

};

selectdb(void)
{
char *ch;
struct strFileinfo *p;
printf("请选择要打印的文件");
gets(ch);
p=head;
printf("%s",ch);
for(p=head;p->next!=NULL;p=p->next)
{
if(strcmp(ch,p->inti)==0) break;

}
printf("%s",p->strFilename);
}


不知道为什么到if(strcmp(ch,p->inti)==0) break; 这里出错 请问是什么原因,是不是strcmp用错了


...全文
124 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2004-11-12
  • 打赏
  • 举报
回复
你的inti 是int型的,strcmp是字符串比较函数,所以你先要itoa()把p->inti转成字符串
另外你的strcmp(ch,p->inti)中的ch是指针,没有初始化,编译会抱错。
sky_1982 2004-11-12
  • 打赏
  • 举报
回复
if(strcmp(ch,p->inti)==0) break;
改为 if(strcmp(ch,strFilename)==0) break;

如果 int inti;是标志位置,
最后可以cout<<p->inti<<endl;检验是否与原数据一样。
tab0tab 2004-11-12
  • 打赏
  • 举报
回复
双击strcmp按F1...几分针后就知道了!
zjraycj 2004-11-12
  • 打赏
  • 举报
回复
head 是未定义的,可以用库函数来转化整形到字符型,但 strcmp()的参数实际上是指针或数组名
grooving 2004-11-12
  • 打赏
  • 举报
回复
itoa()或sprintf()函数可以把int转成char[]
blovegirl 2004-11-12
  • 打赏
  • 举报
回复
那怎么把p->inti变成一个字符串 应该怎么转化?
fly2049 2004-11-12
  • 打赏
  • 举报
回复
问题多了,gets(ch)里面ch是个指针,但你好象没有给它分配内存啊?
还有,strcmp()是用来比较两个字符串的,而你用的p->inti是个整数啊?!!
sharkhuang 2004-11-12
  • 打赏
  • 举报
回复
strcmp(ch,p->inti)用错。
还有你的结构定得不好。没有考虑对齐
kobefly 2004-11-12
  • 打赏
  • 举报
回复
p->inti
是int啊,所以出错了
strcmp()的参数是两个字符串
huabihan 2004-11-12
  • 打赏
  • 举报
回复
问题太多了,inti是int整形的,ch是指针。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧