Какого все-таки страшного Слонопотама вы рисуете.
Код:
size_t fillStruct(FILE *file, struct person bigArray[], size_t arraySize) {
size_t index = 0;
while((index < arraySize) && !feof(file)) {
if (fscanf(file, " %9s %9s %19s \n", bigArray[index].name, bigArray[index].surname, bigArray[index].number) == 3) {
++index;
}
}
return index;
}
Используется это примерно так:
Код:
if(!strcmp(mode,"Read"))
{
size_t i, count;
if((MyBook = fopen("MyBook.txt", "r")) == NULL) {
printf("Reading MyBook.txt error");
}
else {
count = fillStruct(MyBook, Contacts, SIZE);
printf("%d\n", count);
for (i = 0; i < count; ++i) {
printf("%s %s %s\n", Contacts[i].name, Contacts[i].surname, Contacts[i].number);
}
fclose(MyBook);
}
}
И да, уберите вы в
Код:
unsigned char *pname = &NewData.name;
unsigned char *psurname = &NewData.surname;
unsigned char *pnumber = &NewData.number;
амперсанды. Неужели компилятор не выводит предупреждение, что там типы разнятся?