一个数组,它采用不同数据类型的多个元素

时间:2017-01-18 16:46:35

标签: c arrays typedef

我想获取一个包含学生姓名的课程的信息。然后打印出来 我使用了结构,但代码不能正常工作

#include<stdio.h>
#include <string.h>
int size,i,j;

struct Student
{
    char name[50];
    int number;
};

typedef struct Student info1;
info1 print[100];

int main()
{
     printf("Size of class : ");
     scanf("%d",&size);


    for(j=0;j<(20);)
    {
        for(i=1;i<=size;i++)
        {

            printf("%d.Name:",i);
            scanf("%s",&info1.name);// i get an error here that an exp is expected
            print[j]=info1.name; // i get an error here that an exp is expected
            j++;
            printf("Rollno:");
            scanf("%d", &info1.number);// i get an error here that an exp is expected
            print[j]=info1.number;// i get an error here that an exp is expected

        }

    }   
    for (j = 0;j <(20);)
    {
        printf("%s Name", print[j]);
        j++;
        printf("%d Rollno", print[j]);
    }

    return 0;  
}

在调试时我收到以下错误:

  

在info1之前的预期exp

2 个答案:

答案 0 :(得分:1)

在您的代码中,用于所有用法,例如

 scanf("%s",&info1.name);
             ^^^^^

是错误的,因为info是数据类型的别名,而不是变量。

您已经定义了该类型的变量print,并使用它。

答案 1 :(得分:0)

struct Student
{
    char name[50];
    int number;
};

这很好,没有例外

 typedef struct Student info1;
 info1 print[100];

这有力地告诉我你不知道自己在做什么。 info1现在是struct Student的别名。而是一个奇怪的名字。然后你创建一个名为print的缓冲区,容量为一百。

我们可以轻松修复编译时错误。您可以指定一个strudnet

 struct Student astudent;   

 print[i] = astudent;  

你必须先把他初始化

  scanf("%s %d", astudent.name, &astudent.number);

但您无法指定类型&#34; info1&#34;。 &#34; print&#34;对于一系列学生来说,这是一个非常糟糕的选择。制作&#34; printlist&#34;至少。