С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.04.2023
Сообщений: 9
1

Функция, которая открывает файл и записывает строки в нужное поле структуры

12.04.2023, 09:19. Показов 456. Ответов 11

Author24 — интернет-сервис помощи студентам
первый день на форуме, надеюсь правильно задаю вопрос)
есть функция, которая открывает файл и записывает строки в нужное поле структуры
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
void read_from_file(Human** h)
{
    std::ifstream fs;
    fs.open("my.txt");
    
    int w = 1;
    int v = 0;
    for (std::string str; std::getline(fs, str); )
    {
        if (w % 7 == 1)  h[v]->name = str;
        if (w % 7 == 2)  h[v]->place = str;
        if (w % 7 == 3) h[v]->work = str;
        if (w % 7 == 4)  h[v]->vaccine = str[0];
        if (w % 7 == 5)  h[v]->date[0] = stoi(str);
        if (w % 7 == 6) h[v]->date[1] = stoi(str);
        if (w % 7 == 7)
        {
            h[v]->date[2] = stoi(str);
            v++;
        }
        w++;
        cout << w << endl;
        
    }
    fs.close();
}

но после первого вхождения в цикл, он встревает после h[v]->name = str;
без начинки в виде if-ов цикл работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2023, 09:19
Ответы с готовыми решениями:

Функция, что записывает в текстовый файл данные структуры, введенные с клавиатуры
Помогите сделать программу. Написать функцию, что записывает в текстовый файл данные структуры,...

Написать функцию, которая записывает в бинарный файл данные о сканере из приведенной структуры
Для хранения данных о планшетных сканерах описать структуру scan_info. Написать функцию, которая...

Создать структуру и написать функцию, которая записывает в бинарный файл данные о сканере из структуры
Сама структура имеет вид: struct scan_info{ char model; // наименование модели int...

Структура: Написать функцию, которая записывает в бинарный файл данные о сканере из приведенной структуры.
Для хранения данных о планшетных сканерах описать структура вида: struct scan_info{ char model;...

Функция, которая заполняет поле заданной структуры данными с клавиатуры
написать функцию, которая заполняет поле заданной структуры данными, данными с клавиатуры (мы...

11
3718 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
12.04.2023, 10:00 2
Цитата Сообщение от RayRain Посмотреть сообщение
if (w % 7 == 7)
Это условие никогда не выполнится.
0
Модератор
Эксперт С++
13720 / 10917 / 6478
Регистрация: 18.12.2011
Сообщений: 29,146
12.04.2023, 12:19 3
RayRain, не вижу объявление структуры,
но, похоже, Вы имели ввиду
C++
1
2
3
4
5
6
7
8
9
10
#include <sstream>
...
      int v = 0;
      while( std::getline(fs, str) )
      {
          std::istringstream ss(str);
          ss>>h[v]->name >>  h[v]->place >> h[v]->work >> h[v]->vaccine
               >> h[v]->date[0] >> h[v]->date[1] >> h[v]->date[2];
          v++;
      }
0
0 / 0 / 0
Регистрация: 12.04.2023
Сообщений: 9
12.04.2023, 17:40  [ТС] 4
zss, с Вашим кодом не сработало(
Вот объявление структуры
C++
1
2
3
4
5
6
7
8
struct Human
{
    std::string name;
    std::string place;
    std::string work;
    char vaccine;
    int date[3];
};
0
Модератор
Эксперт С++
13720 / 10917 / 6478
Регистрация: 18.12.2011
Сообщений: 29,146
12.04.2023, 18:45 5
Цитата Сообщение от RayRain Посмотреть сообщение
Вашим кодом не сработало(
Приведите пример файла, с которым не сработало.
Строки должны иметь вид
слово слово слово символ число число число
Например:
aaaaa bbbbb cccccc w 123 456 789
0
0 / 0 / 0
Регистрация: 12.04.2023
Сообщений: 9
12.04.2023, 20:56  [ТС] 6
zss
У меня в файле:
ааа ааа ааа
bbbb
cccc
n
123
456
789
Как оказалось, строка считывается и с помощью моего изначального цикла, но работа прекращается на строке:
h[v]->name = str;
Прекращается и в таком виде:
h[v]->name = "ааааа";
Делаю вывод, что дело не в файле, а в работе с массивом указателей на структуру..
C++
1
2
3
4
5
6
7
8
struct Human
{
    std::string name;
    std::string place;
    std::string work;
    char vaccine;
    int date[3];
};
C++
1
 Human** h = new Human * [n];
но по-прежнему не знаю, что именно не так
0
Модератор
Эксперт С++
13720 / 10917 / 6478
Регистрация: 18.12.2011
Сообщений: 29,146
12.04.2023, 22:02 7
Цитата Сообщение от RayRain Посмотреть сообщение
ааа ааа ааа
bbbb
cccc
n
123
456
789
C++
1
2
3
4
5
6
while( std::getline(fs, h[v]->name ) )
      {
          fs>>  h[v]->place >> h[v]->work >> h[v]->vaccine
               >> h[v]->date[0] >> h[v]->date[1] >> h[v]->date[2];
          v++;
      }
0
0 / 0 / 0
Регистрация: 12.04.2023
Сообщений: 9
12.04.2023, 22:28  [ТС] 8
zss
Не работает, возникает
Вызвано исключение: нарушение доступа для чтения.
this было 0xFFFFFFFFFFFFFFE7.
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
12.04.2023, 23:03 9
RayRain, нужен полный код
0
0 / 0 / 0
Регистрация: 12.04.2023
Сообщений: 9
12.04.2023, 23:25  [ТС] 10
Evgen173
ошибка уже нашлась))
спасибо всем, кто обратил внимание
0
zss
13.04.2023, 06:22
  #11
 Комментарий модератора 
Цитата Сообщение от RayRain Посмотреть сообщение
ошибка уже нашлась
П.4.10 Правил
Если вопрос был решен вами самостоятельно, отпишите об этом в своей теме - есть и другие люди, которые столкнутся с той же проблемой, и им поможет ваш ответ.
0
0 / 0 / 0
Регистрация: 12.04.2023
Сообщений: 9
13.04.2023, 19:48  [ТС] 12
Проблема заключалась совсем в другом, в не совсем правильном выделении памяти
C++
1
2
3
4
5
 Human** h = new Human *[n];
 for (int i = 0; i < n; i++)
 {
    h[i] = new Human;
 }
теперь работает
0
13.04.2023, 19:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2023, 19:48
Помогаю со студенческими работами здесь

Напишите программу, которая создает файл, записывает в него три предложения и записывает их в обратном порядке
Напишите программу, которая создает файл, записывает в него три предложения и записывает их в...

Не открывает и не записывает файл
Программа должна сохранить данные в файл, после чего открыть и перезаписать. Но она не реагирует на...

Составить программу, которая записывает строки в другой файл, заменяя английские числительные русскими
Создайте текстовый файл: one 1 I two 2 II three 3 III four 4 IV five 5 V Составить...

Описать процедуру letter(s,t), которая записывает в текстовый файл t все латинские буквы из строки s
Помогите пожалуйста. Описать процедуру letter(s,t), которая записывает в текстовый файл t все...

Программа, которая считывает текст из файла и записывает в другой файл строки, не содержащие двузначные числа
Приветствую, вот задание: &quot;Написать программу, которая считывает текст из файла и записывает в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru