在运行这个程序时,我得到了一个错误
[错误]形式参数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);
}

最佳答案

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

关于c - 调用函数时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30288637/

10-11 23:16
查看更多