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

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

15.11.2015, 16:21. Показов 4104. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я новичок в этом деле, прошу не осуждать.
Помогите разобраться.
Задание такое:

Программа должна начать читать запись шоколада с файла "choc.txt" в массив структуры. Первая строка в файле это количество записи которое возможно в файле.

есть текст "choc.txt", которое выглядит сл образом:

2 (номер записи)
Hershey (наименование 1го шоколада)
White chocolate ( сорт 1 го шоколада)
100 (количество 1го шоколада)
5.30 (цена 1го шоколада)
Alderfer (имя поставщика первого шоколада)
123 Wrong Street Selangor (адресс поставщ 1го шоколада)
012-3765567 (телефон поставщ 1го шоколада)
Van Houten (наименование 2го шоколада)
Dark Chocolate with Almond ( сорт 2 го шоколада)
50 (количество 2го шоколада)
4.80 (цена 2го шоколада)
New Supplier (имя поставщика 2го шоколада)
19 Petaling Street Kuala Lumpur (адресс поставщ 2го шоколада)
019-6783345 (телефон поставщ 2го шоколада)

вот примерно что вышло у меня:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <cstring>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct supplierInfo
{
    char name [100];
    char adress [100];
    int contactNumb;
};
 
struct chocolateInfo
{
    char chocName[100];
    char descr[100];
    int quant;
    int price_perPiece;
    supplierInfo supplier;
};
 
 
int main()
{
    chocolateInfo chocolate[20];
    ifstream in ("choc.txt", ios::in);
 
    int record;
 
    if (!in)
    {
        cout<< "Error can not open the file!";
        return 0;
    }
        in>> record;
        cout<< record<<endl;
 
        for (int i=0; i<record; i++)
        {
 
           in.getline(chocolate[i].chocName,100);
           cout<< chocolate[i].chocName<<endl;
           in.getline(chocolate[i].descr,100);
           cout <<chocolate[i].descr<<endl;
           in>>chocolate[i].quant;
           cout<< chocolate[i].quant<<endl;
           in>>chocolate[i].price_perPiece;
           cout<< chocolate[i].price_perPiece<<endl;
           in.getline(chocolate[i].supplier.name,200);
           cout<< chocolate[i].supplier.name<<endl;
           in.getline(chocolate[i].supplier.adress,200);
           cout<< chocolate[i].supplier.adress<<endl;
           in>>chocolate[i].supplier.contactNumb;
           cout << chocolate[i].supplier.contactNumb<<endl;
 
       }
    in.close();
 
    return 0;
}
в итоге какой то мусор выходит. Как мне исправить это?

Добавлено через 32 минуты
что то не получается...

Добавлено через 57 минут
надо чтобы прочитать номер записи один раз а затем пропустить ее чтение
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2015, 16:21
Ответы с готовыми решениями:

Несколько раз повторить первую страницу с разными параметрами
Добрый день. Есть вордовый документ (во вложении). В документе заполнена первая страница. Работаю с документом word из 1C через...

Повторить строку вектора несколько раз
Ну вот что со мной не так?)) #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;ctime&gt; using namespace std; int...

Как прочитать первую строку из файла
Здравствуйте! Столкнулась с проблемой чтения 1 строчки из файла. Выглядит так: X1#Y1#X2#Y2 0,5 0,125 0 10 1 1 1 8 2 8...

5
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
15.11.2015, 16:24
Лучший ответ Сообщение было отмечено almazuulu как решение

Решение

Избитая ошибка - оставление \n в потоке ввода
В 4 местах (строки 37,47,49,55)
1
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
15.11.2015, 16:54  [ТС]
спасибо! кое как исправил вроде как получается, но не до конца

вот как исправил:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <cstring>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct supplierInfo
{
    char name [100];
    char adress [100];
    char contactNumb [200];
};
 
struct chocolateInfo
{
    char chocName[100];
    char descr[100];
    int quant;
    int price_perPiece;
    supplierInfo supplier;
};
 
 
int main()
{
    chocolateInfo chocolate[20];
    ifstream in ("choc.txt", ios::in);
 
    int record;
 
 
    if (!in)
    {
        cout<< "Error can not open the file!";
        return 0;
    }
 
        in>> record;
        in.ignore(100,'\n');
        cout<< record<<endl;
 
        for (int i=1; i<=record; i++)
        {
 
           in.getline(chocolate[i].chocName,100,'\n');
           in.getline(chocolate[i].descr,100,'\n');
           in>>chocolate[i].quant;
           in.ignore(100,'\n');
           in>>chocolate[i].price_perPiece;
           in.ignore(100,'\n');
           in.getline(chocolate[i].supplier.name,200,'\n');
           in.getline(chocolate[i].supplier.adress,200,'\n');
           in.getline(chocolate[i].supplier.contactNumb,200,'\n');
 
       }
 
        for (int i=1; i<=record; i++)
        {
            cout<< chocolate[i].chocName<<endl;
            cout <<chocolate[i].descr<<endl;
            cout<< chocolate[i].quant<<endl;
            cout<< chocolate[i].price_perPiece<<endl;
            cout<< chocolate[i].supplier.name<<endl;
            cout<< chocolate[i].supplier.adress<<endl;
            cout << chocolate[i].supplier.contactNumb<<endl;
 
        }
    in.close();
 
    return 0;
}

а в итоге на экран выводится лишь половина информации
до слов Van Houten
а после,включая Van Houten и до конца- уже не выводится.
т.е информация о втором шоколаде нет...

Уже целый день голову ломаю..
0
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
15.11.2015, 17:12
Лучший ответ Сообщение было отмечено almazuulu как решение

Решение

almazuulu, а файл из которого читаешь можно увидеть?

Добавлено через 3 минуты
almazuulu, только именно прикрепи его а не копируй содержимое
1
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 95
15.11.2015, 17:13  [ТС]
Спасибо всем кто помог и поинтересовался помочь мне! То что я исправил в конце было верным решением. Просто в какой то момент я сам внес корректировки в тексте и забыл про это. Мой косяк
0
 Аватар для Mesteriis
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
15.11.2015, 17:16
almazuulu, еще если ты читаешь из файла и прочие использовать char не хорошо, так как по факту ты не знаешь длину строки!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2015, 17:16
Помогаю со студенческими работами здесь

Как прочитать первую строку из текстового файла?
Есть текстовый файл, нужно сделать BATник который бы первую строку из текстового файла присваивал переменой и по этой переменой создавал...

Прочитать из файла первую строку
Доброго времени суток. Как прочитать из файла первую строку? Пробовал так: $handle = fopen('files/' . $file, 'r'); $url =...

Нужно прочитать из текстового файла определённую строку (не первую)
Люди, спасайте. Перерыл весь инет, никак найти не могу. В книге у меня какой-то бред написан. Нужно прочитать из текстового файла...

Как считать текст из файла несколько раз подряд в программе?
В общем, делал упражнение и у меня программа коряво написана так, что получается нужно использовать текст файла несколько раз, но я не знаю...

Как прочитать файл несколько раз?
Помогите пожалуйста. В файле у меня хранится 10 строк &quot;Hello World!&quot;. На первой итерации цикла for все выводится корректно, но уже на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь 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. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru