У меня есть структурные переменные с похожими именами, как их распечатать в c - PullRequest
0 голосов
/ 20 июня 2020

У меня похожие структурные переменные. Как распечатать свои данные с помощью циклов.


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 ]

3 голосов
/ 20 июня 2020

Вместо того, чтобы иметь отдельную переменную для каждого сотрудника, сделайте из них массив:

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

И l oop через них.

1 голос
/ 21 июня 2020

Вы можете определить массив структур, чтобы вы могли сделать это в l oop. Однако, возможно, будет проще написать функцию печати вместо этого.

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

0 голосов
/ 21 июня 2020

Сохраните их в массиве, например:

struct employee emps[] = {
    { 1, "abc", "def", 20, 000 },
    { 2, "ghi", "jkl", 20, 001 },
    ...
};

или примерно так

struct employee emps[] = {
    emp1,
    emp2,
    ...
};

, а затем вы можете go через них, например:

for(i = 0; i < empLastIndex; i++)
{
    ...
    emps[i]
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...