Возможно, было бы лучше использовать массив структур вместо двух отдельных массивов для хранения имени и возраста для каждой записи. Затем вы можете просто перебрать strcpy, чтобы скопировать входную строку из name в имя вашей структуры. Если вам неудобны структуры, вы также можете использовать пару двумерных массивов.
Это похоже на домашнее задание, поэтому я не собираюсь публиковать код, но для базового алгоритма, который поможет вам начать (и, надеюсь, упростить то, что у вас есть):
#define MAX_CONTACTS 10
#define MAX_NAME_LENGTH 20
// 2D array to store up to 10 names of max 20 character length
char nameVar[MAX_CONTACTS][MAX_NAME_LENGTH]
int ageVar[MAX_CONTACTS]
do until end of user input
read name into nameVar[index]
read age into ageVar[index]
index += 1
end loop
while contactCounter < index
ouput nameVar[contactCounter]
output age[contactCounter]
// you could also write to file in this loop if thats what you're trying to do
// using the fprintf function to write to an opened file
contactCounter += 1
end loop
Кроме того, я не уверен, что вы пытаетесь сделать с этим вызовом atoi, но, похоже, в этом нет необходимости. Принцип работы atoi заключается в том, что он смотрит на первый передаваемый символ и преобразует все цифры, пока не встретит нецифровый символ в массиве. Поэтому, если у вас есть массив символов c = "123h", atoi вернет 123. Если вы передадите atoi "1h2", он вернет 1.
Также вы можете использовать fprintf для распечатки массива char и int в файл.
Так что, если у вас есть int i и char s [10] = "hello" и файловый поток, вы можете распечатать его как:
fprintf (поток, "мой текст для отображения:% s% i", s, i)
Надеюсь, это поможет.