-1
votes

J'ai une variables de structure avec des noms similaires, comment les imprimer dans c

J'ai des variables de structure similaires. Comment imprimer ses données à l'aide de boucles.

struct employee{
int cardNo;
char name[20];
char surname[20];
long salary;
int age;
};
struct employee emp1={1,"abc","xyz",70,000,30}; //I have similar variables named emp2, emp3.....till emp20

int main()
{
   //i need to print the salary of all 20 employees using a loop. How to do it?
    return 0;
}


1 commentaires

Vous ne devriez pas utiliser 20 variables distinctes. Utilisez un tableau à la place.


3 Réponses :


3
votes

Au lieu d'avoir une variable distincte pour chaque employé, faites-en un tableau:

struct employee emps[] = {
    {1,"abc","xyz",70,000,30},
    {2,"def","zzz",60,400,20},
    ...
}


2 commentaires

Pouvez-vous s'il vous plaît montrer comment imprimer un salaire pour chaque employé, comment iTerrer


AVERTISSEMENT: Stackoverflow. com / questions / 62489457 / ...



1
votes

Vous pouvez définir une gamme de structures afin que vous puissiez le faire dans la boucle. Cependant, il peut être plus facile d'écrire une fonction d'impression au lieu de le faire.

#include <stdio.h>

typedef struct employee
{
    int cardNo;
    char name[20];
    char surname[20];
    long salary;
    int age;
}Employee;

void print_employee_information(const struct employee *p)
{
    printf("%d %s %s %ld %d\n", p->cardNo, p->name, p->surname, p->salary, p->age);
}

int main()
{
    
    struct employee emps[] = {
        {1, "abc", "xyz", 70, 000},
        {2, "def", "zzz", 60, 400},
    };

    for(int i = 0; i < 2; ++i) {
        Employee *p = (emps+i);
        print_employee_information(p);
    }
    return 0;
}


2 commentaires

Pourquoi ne pas simplement passer emPs + i au lieu de créer un nouveau pointeur? Aussi pourquoi avez-vous défini le type employé et ne l'avez pas utilisé?


@Wendyn oui, je suis d'accord avec vous. Il y a ces problèmes car je reçois une partie du code du commentaire en haut et du code du propriétaire en question.



0
votes

Rangez-les en tableau, comme celui-ci:

for(i = 0; i < empLastIndex; i++)
{
    ...
    emps[i]
    ...
}


0 commentaires