【问题标题】:how to initialize struct and call from function to display in main如何初始化结构并从函数调用以在main中显示
【发布时间】:2017-04-26 12:05:23
【问题描述】:

我想创建一个结构并在 InitiateA 中初始化它们并在 DisplayA 中打印并在 Main 中调用它们。我尝试过,但似乎没有任何效果?

#include <string.h>

struct Penalty{
  // Provide structure definition for Penalty here
  double fine;
  char Identity[20];
  int i;
};

void InitiateA (struct Penalty data[]);
void DisplayA (struct Penalty data[]);

int main(){

  struct Penalty rule[3];
  struct i;

  DisplayA(rule);

  rule[0].fine = 20.00;
  strcpy(rule[0].Identity, "Student" );

  rule[1].fine = 30.00;
  strcpy(rule[1].Identity , "Staff");

  rule[2].fine = 50.00;
  strcpy(rule[2].Identity , "Vendor");

  for(i=0;i<3;i++) {
    printf("%d%s",rule[i].fine,rule[i].Identity);
  }   

  return 0;
}

我不确定如何将此函数调用到主函数

void InitiateA (struct Penalty data[]){
  //intialize data here.
  printf("identity\n");
  printf("%d",rule[i].Identity);
  return;
}

void DisplayA (struct Penalty data[]){
  //display data here
  printf("Fine : RM %d\n", data[i].fine);
  return;
}

我做错了吗?

【问题讨论】:

  • 不要在 void 函数中编写 return 语句。

标签: c data-structures


【解决方案1】:

这是一个错误,在InitiateA():

printf("%d",rule[i].Identity);

你是说

printf("%d", data[i].Identity);

您不能引用变量 rule,此时它不在范围内(它是 main() 中的本地变量)。

你需要这样称呼它,来自main()

InitiateA(rule);

【讨论】:

    【解决方案2】:

    伙计们,我设法完成了!

    #include <string.h>
    #include <stdio.h>
    struct Penalty{
    
    double fine;
    char Identity[20];
    };
    
    void InitiateA (struct Penalty data[]);
    void DisplayA (struct Penalty data[]);
    
    
    int main(){
    
    struct Penalty rule[3];
    
    InitiateA(rule);
    DisplayA(rule);
    
    system ("pause");
    
    }
    
    void InitiateA (struct Penalty data[]){
      data[0].fine = 20.00;
    strcpy(data[0].Identity, "Student" );
    
    data[1].fine = 30.00;
     strcpy(data[1].Identity , "Staff");
    
     data[2].fine = 50.00;
    strcpy(data[2].Identity , "Vendor");
    
    }
    
     void DisplayA (struct Penalty data[]){
      int i;
     for(i=0;i<3;i++){
     printf("%s %.2f \n",data[i].Identity, data[i].fine);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 1970-01-01
      • 2013-04-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多