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; }
3 Réponses :
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}, ... }
Pouvez-vous s'il vous plaît montrer comment imprimer un salaire pour chaque employé, comment iTerrer
AVERTISSEMENT: Stackoverflow. com / questions / 62489457 / ...
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; }
Pourquoi ne pas simplement passer emPs + i code> au lieu de créer un nouveau pointeur? Aussi pourquoi avez-vous défini le type
employé code> 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.
Rangez-les en tableau, comme celui-ci:
for(i = 0; i < empLastIndex; i++) { ... emps[i] ... }
Vous ne devriez pas utiliser 20 variables distinctes. Utilisez un tableau à la place.