2016-12-30 1 views
-1

Можно ли получить индекс вектора structs? IE У меня есть студент структуры с именем, числом и возрастом членов. Допустим, у меня 5 студентов, Нельсон номер 2160482, Луи номер 2160483, Марио номер 2160484, Джон номер 2160485 и номер Николь 2160486. Я хочу получить индекс каждого студента, как я могу это сделать?Получить индексный номер вектора structs

typedef struct { 
    char name[30]; 
    int number; 
    int age; 
} tStudents; 

tStudents vStudents[]; 

void check_data(tStudents vStudents[], int numStudents) { 
    int n; 

    for (n = 0; n < numStudents; n++) { 
     printf("Students registered with the nr. %i:\n", vSoft[n]);//this doesnt work, any idea how to get this value ? 
     printf("Name: %s\n", vStudents[n].name); 
     printf("Number: %i\n", vStudents[n].number); 
     printf("Age: %i\n", vStudents[n].age); 
    } 
    getchar(); 
} 
+1

какой вектор? где это? –

+0

'это не работает' ... пожалуйста, уточните. –

+0

'vSoft [n]' не определен нигде в этом коде. Также 'tStudents vStudents [];' не имеет никакого смысла. – UnholySheep

ответ

1

Я не уверен, в чем проблема. Вы можете попробовать следующий код, который, я надеюсь, поможет вам.

#include <stdio.h> 
#include <string.h> 

#define nr 5 

typedef struct { 
    char *name; 
    int number; 
    int age; 
} tStudents; 

tStudents vStudents[nr]; 

void check_data(tStudents vStudents[], int numStudents) { 
    int n; 

    for (n = 0; n < numStudents; n++) { 
     printf("Students registered with the nr. %i:\n", n); 
     printf("Name: %s\n", vStudents[n].name); 
     printf("Number: %i\n", vStudents[n].number); 
     printf("Age: %i\n", vStudents[n].age); 
    } 
    getchar(); 
} 

int main() { 

    vStudents[0].name = "Nelson"; 
    vStudents[0].number = 2160482; 
    vStudents[0].age = 12; 

    vStudents[1].name = "Louis"; 
    vStudents[1].number = 2160483; 
    vStudents[1].age = 12; 

    vStudents[2].name = "Mario"; 
    vStudents[2].number = 2160484; 
    vStudents[2].age = 12; 

    vStudents[3].name = "John"; 
    vStudents[3].number = 2160485; 
    vStudents[3].age = 12; 

    vStudents[4].name = "Nicole"; 
    vStudents[4].number = 2160486; 
    vStudents[4].age = 12; 

    check_data(vStudents, nr); 
    return 0; 
} 

Тест

Students registered with the nr. 0: 
Name: Nelson 
Number: 2160482 
Age: 12 
Students registered with the nr. 1: 
Name: Louis 
Number: 2160483 
Age: 12 
Students registered with the nr. 2: 
Name: Mario 
Number: 2160484 
Age: 12 
Students registered with the nr. 3: 
Name: John 
Number: 2160485 
Age: 12 
Students registered with the nr. 4: 
Name: Nicole 
Number: 2160486 
Age: 12 
+0

yeap, вот оно, спасибо, и у вас отличный новый год! –