帮忙看下C语言的代码问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:17:17
编写的代码中的一段
void find()/*查询函数*/
{
int i;
char str[20],ch;
do
{
printf("输入要查询的学生姓名或学号:");
gets(str) ;
for(i=0;i<now_num;i++)
if(strcmp(stu[i].name,str)==0||strcmp(stu[i].num,str)==0)
{
printf(" 编号 姓名 成绩1 成绩2 成绩3\n");
printf(" %s %s %d %d %d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3);
}
printf("按任意键返回主菜单.");
ch=getch();
}
while(!ch);
system("cls");
}
一直出现错误:E:\C语言\学生成绩系统\1.cpp(90) : error C2664: 'strcmp' : cannot convert parameter 1 from 'char' to 'const char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
要怎么改才行呢

//将
struct ...
{
...
char name;
char num;
...
};

//改为
struct ...
{
...
char name[10];//当然,这里的10可按你的需要改变
char num[10];
...
};

那是你的stu[i].num或者stu[i].name是一个字符,不是字符串啊,要用char *
如:在结构体中用char name[20] char num[20]

看的出来是数据类型转换错误了。不过我刚开始学语言还是java的。不清楚怎么改

这个错误的意思是strcmp函数不能把第一个参数由字符型转换为字符(串)指针。

strcmp函数传入的两个参数都应该为指针或地址。
而你调用的时候给它传入了一个字符型的值。

也许可以像以下这样改。
strcmp(&(stu[i].name),str)

以后要是看到类似的错误提示,都是函数传错了参数的数据类型。