在运行此程序时,我收到错误 [错误]形式参数1的类型不完整 在dev cpp上我通过main调用函数assign,我得到了上面提到的错误。
#include <stdio.h>
void assign(struct username i);
void show1(struct username i);
struct username
{
char name[30];
int rollno;
float salary;
};
int main(void)
{
struct username i;
assign(i);
show1(i);
}
void assign(struct username i)
{
puts("enter name");
scanf("%s",i.name);
puts("Enter roll no");
scanf("%d",i.rollno);
puts("Enter salary");
scanf("%f",i.salary);
}
void show1(struct username i)
{
printf("\n---------------------------------\n");
printf("%s",i.name);
printf("\n------%d-------\n",i.rollno);
printf("%f",i.salary);
}
答案 0 :(得分:2)
#include <stdio.h>
struct username {
char name[30];
int rollno;
float salary;
};
void assign(struct username *i);
void show1(struct username *i);
int main(void)
{
struct username i;
assign(&i);
show1(&i);
}
void assign(struct username *i)
{
puts("enter name");
scanf("%s", i->name);
puts("Enter roll no");
scanf("%d", &i->rollno);
puts("Enter salary");
scanf("%f", &i->salary);
}
void show1(struct username *i)
{
printf("\n---------------------------------\n");
printf("%s", i->name);
printf("\n------%d-------\n", i->rollno);
printf("%f", i->salary);
}
我猜这就是你想要的。 scanf
需要指向某种类型的指针,struct
通过值传递给函数,所以如果你想在main中看到结果,你需要通过引用传递它。
答案 1 :(得分:1)
你声明一个带有参数的函数,当时是未申报的类型,因为在首次使用后,struct username
被引入范围
使用前向声明或交换函数声明和结构定义。
答案 2 :(得分:-1)
好吧,尝试使用另一个IDE我会推荐像许多其他人会做代码:阻止IDE,因为我使用dev cpp一段时间,有时我有问题但是当我在另一个IDE中运行代码时它工作得很好。 尝试struct(用户名i);