调用函数时出错

Error while calling a function

关于 运行 这个程序我收到错误 [错误] 形式参数 1 的类型不完整 在 dev cpp 上,我通过 main 调用函数分配,但出现上述错误。

  #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);
}

您声明了一个接受参数的函数,当时未声明类型,因为 struct username 被引入范围 首次使用之后。

使用前向声明或交换函数声明和结构定义。

好吧,尝试使用另一个 IDE 我会像许多其他人一样推荐 code:blocks IDE,因为我使用 dev cpp 有一段时间,但有时我会遇到问题但是当我 运行 另一个 IDE 中的代码工作正常。 尝试结构(用户名 i);

#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 中看到结果,你需要通过引用传递它。