调用函数时出错

时间:2015-05-17 15:34:27

标签: c function structure

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

3 个答案:

答案 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);