Превратите
while((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
в
if((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
В противном случае вы прочитаете clientName, а затем продолжите чтение clientAge несколько раз, пока выполняется итерация while, поскольку файл не закончился.Конечно, синтаксический анализ будет недействительным, поскольку ваш файл содержит данные для имени, возраста, имени, возраста и т. Д. Поэтому при попытке проанализировать файл по имени, возрасту, возрасту, возрасту и т. Д. Требуются байты, представляющие имена, и выполняется попытка проанализировать их по возрасту..