@artgor261
Студент РТУ МИРЭА

Как скопировать информацию из файла в структуру?

Имеется текстовый файл, состоящий из трёх строк. В каждой строке записан номер, имя и фамилия футболиста. Так же имеется структура, описывающая футболиста. Моя задача заключается в том, что мне нужно создать массив структур и заполнить каждый элемент этого массива информацией, находящейся в файле.

Вот содержимое файла:


30 Lionel Messi
7 Kylian Mbappe
10 Neymar Jr.


Вот мой код:

struct player
{
    int number;
    char name[MAX];
    char surname[MAX];
};

int main(int argc, char *argv[])
{
    struct player players[3];
    FILE * fp;
    fp = fopen("players.txt", "rb");

    for (int index = 0; index < 3; index++)
        fread(&players[index], sizeof(struct player), 1, fp);
    fclose(fp);
    for (int index = 0; index < 3; index++)
        printf("\n%d %s %s", players[index].number,
                players[index].name, players[index].surname);

    return 0;


При выводе получается что-то странное, прикреплю скрин.

Вывод:

63e400bd03ef5399486475.png

Что я делаю не так?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
@artgor261 Автор вопроса
Студент РТУ МИРЭА
Переписал код, всё заработало:

struct player
{
    int number;
    char name[MAX];
    char surname[MAX];
};
int main(int argc, char *argv[])
{
    FILE * fp;
    struct player arr[3];

    fp = fopen("players.txt", "rb");
    for (int index = 0; index < 3; index++)
        fscanf(fp, "%d %s %s", &arr[index].number,
                arr[index].name, arr[index].surname);
    fclose(fp);
    for (int index = 0; index < 3; index++)
    {
        puts("");
        printf("%d %s %s", arr[index].number,
                arr[index].name, arr[index].surname);
    }

    return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dima20155
you don't choose c++. It chooses you
Данные в файле - символы
Сериализация массива чатов будет работать нормально, а вот int сертализуется с большой вероятностью в нечитаемые символы, поэтому либо перепишите сериализацию/десериализацию, либо читайте символы и кастуйте их в правильные данные
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы