2013-11-12 3 views
0

У меня есть структура, которая считывает данные от пользователя:Array as struct database?

typedef struct 
{ 
    int seconds; 
} Time; 

typedef struct 
{ 
    Time time; 
    double distance; 
} Training; 


Training input; 

scanf("%d %lf", input.time.seconds, input.distance); 

Это зсап будет петельной и пользователь могу вводить различные данные каждый раз, когда я хочу, чтобы хранить эти данные в массиве для последующего использования. Я ДУМАЮ, Я хочу что-то вроде arr [0]. Секунд и arr [0] .distance.

Я пытался сохранить введенные данные в массив, но это действительно не работает вообще ...

Training data[10]; 

data[10].seconds = input.time.seconds; 
data[10].distance = input.distance; 

Данные будут вытирать, когда программа закрывается, и это, как мне нравится быть. Поэтому я хочу, чтобы он хранился в массиве, без файлов или баз данных!

+1

Когда вы объявляете «Учебные данные [10];', вы можете обращаться к элементам 0..9. –

ответ

0

Две вещей, обучающий набор имеет поле «времени», чтобы получить доступ к секундам, и если вы определили массив из 10 элементов, вы можете использовать только данные [0] данные [9], данные [10] пройдут мимо конца массива.

Training data[10]; 

data[0].time.seconds = input.time.seconds; 
data[0].distance = input.distance; 

.... 

data[9].time.seconds = input.time.seconds; 
data[9].distance = input.distance; 
1

data[10] имеет тип Training который не имеет seconds. Попробуйте:

Training data[10]; 

data[10].time.seconds = input.time.seconds; 
data[10].distance = input.distance; 
+2

Вы не можете использовать индекс 10 в массиве 'Training data [10];' потому что действительные индексы начинаются от 0 до 9. –