Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38

Чтение из файла - последняя запись выводится два раза

24.03.2009, 15:38. Показов 3285. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень нужна помощь в написании функции на С++
У меня есть написанная функция
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Bus *Read_file(char *fname)
{
    FILE *inf;//указатель на структуру FILE
    Bus x;
    Bus *buses=0;//если было что-то введено очищаем
    if ((inf=fopen(fname,"r"))==NULL) cout<<"Not file "<<fname<<endl;
    fseek(inf,0,0);//задаем текущее положение курсора в начале
    while (!feof(inf))
    {
        fscanf(inf," %s ",&x.fio);//s-строковый тип
        fscanf(inf," %d ",&x.mnomer);//d-десятичный вид
        fscanf(inf," %s ",&x.nombus);
        fscanf(inf," %s ",&x.depo);
        buses=add(buses,x);
    }
    fclose(inf);//закрывает поток ввода/вывода
    return buses;
}
Но хотелось бы тоже самое на С++, через
C++
1
ifstream inf(fname, ios_base::in);
Помогите, кто чем может
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2009, 15:38
Ответы с готовыми решениями:

Не выводится последняя запись из БД
Всем доброго времени суток! Столкнулся с такой проблемой: не выводится последняя запись из БД. скажите, что не так? function...

В цикле выводится только последняя запись
Всем добрый вечер. нужна помощь. Сервер отправляет json объект Я получаю объекта на стороне JavaScript, и с помощью split...

Два раза выводится слово вместо одного
Здесь в первый раз &quot;Бот, &quot; выводится 2 раза, все последующие разы по 1 разу Вот отрывочек из функции-базы бота void...

5
54 / 50 / 9
Регистрация: 16.05.2008
Сообщений: 162
24.03.2009, 15:55
C++
1
2
3
4
5
6
7
8
9
10
11
Bus *Read_file(char *fname)
{
ifstream inf(fname, ios_base::in);
Bus x;
 Bus *buses=0;//если было что-то введено очищаем
 if(!inf) cerr<<"Not file "<<fname;
 inf >> x.fio >> x.mnomer >> x.nombus >> x.depo;
 buses=add(buses,x);
 inf.close();
 return buses;
}
Только непонятно сколько строк в читаемом файле? Все переменные для заполнения объекта располагаютя в строку или как?
1
 Аватар для Mecid
684 / 233 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
24.03.2009, 16:00
ну а что не получается?
1
 Аватар для Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
24.03.2009, 17:12  [ТС]
Mecid, спасибо все почти получилось, только он мне последнюю запись 2 раза выводит, в чем тут может быть ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Bus *Read_file(char *fname)
{
    ifstream fin(fname, ios_base::in);
    Bus x;
    Bus *buses=0;//если было что-то введено очищаем
    if (!fin)
    {
     cout<<"Not file "<<fname;
     return 0;
     }
    while (!fin.eof())
    {
    fin >> x.fio >> x.mnomer >> x.nombus >> x.depo;
    buses=add(buses,x);
    }
    fin.close();
    return buses;
   }
Добавлено через 5 минут 0 секунд
может быть цикл другой использовать?

Добавлено через 29 минут 44 секунды
и еще как в С++ проверить формат введенных данных, чтобы вместо целого числа не ввели строковый символ?

Добавлено через 1 минуту 27 секунд
BornLeader, то есть спасибо тебе, я что-то окосела уже видимо, мозг скоро закипит!%)
0
54 / 50 / 9
Регистрация: 16.05.2008
Сообщений: 162
24.03.2009, 17:31
Вообщето если мы читаем файл и заполняем какую-то структуру то у нас файл должен гарантированно содержать строки определенного формата с валидными значениями. То есть при записи в файл проверять вводимые значения переменных.
Если при чтении мы будем проверять на правильность типов вводимых переменных то при ошибке мы должны выкинуть Exception (то есть аварийно прервать выполнение нашей задачи).

Ну а вообще см. функцию int isdigit(int c);
0
 Аватар для Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
24.03.2009, 18:08  [ТС]
BornLeader, мне проверка не при чтении нужна, с чтением я кстати разобралась, спасибо за помощь теперь все нормально работает.

Просто у меня в программе в начале работы необходимо выбрать пункт меню, т.е. ввести число, и я хочу сделать защиту от дурака, чтобы проверялось, число ли введено, а то если ввести букву, она циклится и все.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2009, 18:08
Помогаю со студенческими работами здесь

Последний байт выводится два раза с feof()
Последний байт выводится два раза (ну и размер, конечно на 1 больше реального выводится. Объясните пож. почему такое происходит? ...

Значение два раза выводится в таблицу вместо одного
Есть вот такой код для кнопки. Суть проблемы в том, что расчитываемый результат в нужную мне таблицу закидывается лишний раз int a,tol,...

При создании таблицы результат выводится два раза
При выводе таблицы результатов последний введенный год/страница(по условию) выводится два раза и так же при поиске, не могу понять, в чем...

StringGrid: при запуске заголовок выводится два раза
При запуске программы заголовок StringGrid выводится два раза: в нулевой строке (Где и должен быть) и в первой. После нажатия Esc второй...

Последнее значения которое считую два раза выводится на экран
Я считываю с файла и вывожу два раза почему последнее значения с файла выводится И я не понимаю что не так void Persona::ReadFrom() ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru