Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 1
Регистрация: 03.12.2017
Сообщений: 3

Не получается считать из текстового файла данные о студентах и записать в структуру

03.12.2017, 19:24. Показов 4747. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно написать программу которая на основе данных о студентах что-то считывает и выполняет.
Возникла проблема со считыванием всех данных из файла. Долго пытаюсь это сделать. Во первых компилятор ругается,
а во вторых думаю я что-то не так сделала.
Данные о студентах представлены в формате:
Номер_Фамилия_Имя_пропуски, сделанные/не сделанные домашние задания_семестровые(+сделаны/не сделаны)
Прикрепила ТХТ файл.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
struct Student
{
    int number[12];
    char Surname[12];
    char Name[12];
    char Day[9];
    char Num_Sem[9];
    bool Done_Sem[9];
};
int main()
{
    char str[100];
    const int n = 12;
    Student* Journal = new Student[n];
    FILE* kot;
    fopen_s(&kot, "journal.txt", "r");
    fgets(str, 100, kot);
    memset(str, 0, 100);
    for (int i = 0; i < n; i++)
    {
        fscanf_s(kot, "%d", &Journal[i].number);
        fscanf_s(kot, "%s", &Journal[i].Surname);
        fscanf_s(kot, "%s", &Journal[i].Name);
        for (int j = 0; j < 9; j++)
            fscanf_s(kot, "%s", &Journal[i].Day[j]);
        for (int k = 0; k < 9; k++)
        {
            while ((fgetc(kot) != '+') || (fgetc(kot) != ' '))
                Journal[i].Num_Sem[k] = fgetc(kot);
            if (fgetc(kot) == '+')
                Journal[i].Done_Sem[k] = true;
            else
                Journal[i].Done_Sem[k] = false;
        }
    }
Вложения
Тип файла: txt journal[79].txt (890 байт, 7 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.12.2017, 19:24
Ответы с готовыми решениями:

Считать данные из текстового файла и записать их в массив float-ов
Помогите пожалуйста!!!Очень нужно! как считать данные из txt файла и записать их в массив float на языке с++.

Считать данные из текстового файла по условию и записать их в другой текстовый файл (файловый ввод/вывод)
Здравствуйте! Очень прошу о помощи! Суть задания - дан текстовый файл, нужно считать его и записать в другой файл слова состоящие только из...

Считать данные в структуру из файла
Здравствуйте! Подскажите как считать с текстового файла в структуру Считать в строку а затем инициализировать поля структуры с этой...

3
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2017, 20:22
Нормальной функцией пользуйся. Амперсанды для строк не ставят.
C++
1
2
3
        fscanf(kot, "%d%s%s", &Journal[i].number, Journal[i].Surname, Journal[i].Name);
        for (int j = 0; j < 9; j++)
            fscanf(kot, "%с", &(Journal[i].Day[j]));
0
0 / 0 / 1
Регистрация: 03.12.2017
Сообщений: 3
03.12.2017, 21:31  [ТС]
nmcf, Спасибо большое, но все равно ругается, и программа не компилируется

(3)warning C4477: "fscanf_s": в строке форматирования "%s" требуется аргумент типа "unsigned int", но вариативный аргумент "3" имеет тип "char *"
(3)этот аргумент используется в качестве размера буфера
(3)"fscanf_s": передано недостаточно аргументов для строки формата
(3)заполнители и их параметры ожидают переменное число аргументов в количестве 5, но было предоставлено 3
(3)отсутствующий вариативный аргумент "4" требуется для строки форматирования "%s"
(3)этот аргумент используется описателем преобразования
(5)warning C4473: "fscanf_s": передано недостаточно аргументов для строки формата
(5)заполнители и их параметры ожидают переменное число аргументов в количестве 2, но было предоставлено 1
(5)отсутствующий вариативный аргумент "2" требуется для строки форматирования "%c"
этот аргумент используется в качестве размера буфера

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int i = 0; i < n; i++)
    {
        fscanf_s(kot, "%d%s%s", &Journal[i].number, Journal[i].Surname, Journal[i].Name);
        for (int j = 0; j < 9; j++)
            fscanf_s(kot, "%c", &(Journal[i].Day[j]));
        for (int k = 0; k < 9; k++)
        {
            while ((fgetc(kot) != '+') || (fgetc(kot) != ' '))
                Journal[i].Num_Sem[k] = fgetc(kot);
            if (fgetc(kot) == '+')
                Journal[i].Done_Sem[k] = true;
            else
                Journal[i].Done_Sem[k] = false;
        }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2017, 23:52
Отключи SDL в свойствах проекта и выбрось эти _s-функции, либо читай документацию по ним и дополнительные параметры добавляй.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2017, 23:52
Помогаю со студенческими работами здесь

Считать данные из файла в структуру
Есть одна структура, есть файл, в файл я эту структуру записал. Теперь мне надо из файла опять записать данные в другую структуру. Считал...

Как правильно считать (записать) структуру из файла?
не хочет правильно читать, вроде пишет, вроде правильно, не уверен. Заранее благодарен за помощь void __fastcall...

Считать данные текстового файла в массив
Здравствуйте знатоки. Есть файл file.txt в котором содержатся числа например массив из 5 символов (сам массив не определён и чисел на...

Из текстового файла считать матрицу и записать ее в бинарный файл
Прошу помочь с решением: Из текстового файла считать матрицу и записать ее в бинарный файл Добавлено через 2 часа 22 минуты ...

Не получается считать данные из файла
Здравствуйте! Мне надо создать базовый класс и два наследника, еще функцию типа virtual, причем значение считываются из файла. Много ошибок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru