2017-01-18 2 views
1

Je veux prendre des informations d'une classe qui contient le nom de l'élève, n ° de rouleau. et l'imprimer je structure, mais le code ne fonctionne pasun tableau qui prend plusieurs éléments de type de données différent

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

pendant le débogage je reçois les erreurs suivantes:

exp attendue avant info1

Répondre

1

Dans votre code, pour tout l'usage comme

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

sont faux, comme info est un alias d'un type de données, pas une variable.

Vous avez déjà défini une variable de ce type, print, utilisez-la.

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

Ceci est bien et unexceptional

typedef struct Student info1; 
info1 print[100]; 

Cela suggère fortement à moi, vous ne savez pas ce que vous faites. info1 est maintenant un alias pour struct Student. Plutôt un nom étrange. Ensuite, vous créez un tampon appelé impression avec une capacité de cent.

Nous pouvons facilement corriger vos erreurs de compilation. Vous pouvez attribuer un strudnet

struct Student astudent; 

print[i] = astudent; 

et vous devez le premier initialiser

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

mais vous ne pouvez pas affecter le type « info1 ». Et "imprimer" est un très mauvais choix pour un éventail d'étudiants. Faites-en "printlist" au moins.