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

Работа с текстовыми файлами

17.04.2018, 22:41. Показов 1252. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть програма которая используя числа из текстового файла input.txt и решает по формуле указанной в программе.
Код программы:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
 
using namespace std;
 
int main()
{
    ifstream fin("1.txt");
    double a, b;
    try
    {
        if (!fin.good())
        {
            throw "File input.txt doesn't exist!";
        }
        fin >> a >> b;
        cout << "K oplate: " << a * b / 100 << " UAH.\n";
    }
    catch (const char* error)
    {
        cout << error << "\n";
    }
    fin.close();
    return 0;
}
Мне нужно сделать так, что-бы при отсутствии текстового файла программа создавала его сама и оставляла его не заполненым. И что для меня более важно, если в текстовом файле отсутствуют или некоректно введены данные, то выдаёт ошибку "Некоректный формат данных" или "Отсутствуют данные". Зарание спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2018, 22:41
Ответы с готовыми решениями:

Работа с текстовыми файлами
Делаю лабы по С++. Необходимо записать несколько строк в файл, а затем считать их оттуда. Использую методы, описанные в методичке (по сути,...

Работа с текстовыми файлами
Всем доброго дня! Нужна помощь в решении следующей работы: Нужно создать файл, содержащий текст, набранный заглавными английскими...

Работа с текстовыми файлами
Пожалуйста, помогите с задачей: Дан файл f, компоненты которого являются действительными числами. Найти: 1.наибольшее из значений...

12
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
17.04.2018, 23:36
Цитата Сообщение от _easy_ Посмотреть сообщение
Мне нужно сделать так, что-бы при отсутствии текстового файла программа создавала его сама и оставляла его не заполненым.
Пpи созднии объекта откpытии файла для записи в него
C++
1
2
ofstream obj;
obj.open(name.txt);
Если файла нет, то он создает его автоматически.

Добавлено через 4 минуты
Цитата Сообщение от _easy_ Посмотреть сообщение
И что для меня более важно, если в текстовом файле отсутствуют или некоректно введены данные, то выдаёт ошибку "Некоректный формат данных" или "Отсутствуют данные"
если файл создается пpи pаботе пpогpаммы, то ставь условие пpовеpки, что запись в файл только целочисленные значения т.е int.
1
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 21:18  [ТС]
Хорошо, а если у меня уже есть текстовый файл с данными с названием "1.txt" оно стирает всю информацию из моего файла и снова его создаёт уже пустым программа пишет в строчке вместо ответа некое "inf", это из-за того что у меня стоит "double" вместо "int", но в том то и проблемма что я работаю именно с десятичными числами.
0
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
18.04.2018, 22:58
Цитата Сообщение от _easy_ Посмотреть сообщение
Хорошо, а если у меня уже есть текстовый файл с данными с названием "1.txt" оно стирает всю информацию из моего файла и снова его создаёт уже пустым программа пишет в строчке вместо ответа некое "inf", это из-за того что у меня стоит "double" вместо "int", но в том то и проблемма что я работаю именно с десятичными числами.
Без кода ничего сказать не могу.
0
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:13  [ТС]
Кстати код у меня частично изменился:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream obj; // правильно ведь поставил ваши строчки?
    obj.open("input.txt");
    double a, b;
    try
    {
        if (!fin.good())
        {
            throw "File input.txt doesn't exist! Please create it and fill the data";
        }
                // примерно здесь думаю стоит сделать проверку на коректность данных из текстового файла
        fin >> a >> b;
        cout << "K oplate: " << a * b / 100 << " UAH.\n";
    }
    catch (const char* error)
    {
        cout << error << "\n";
    }
    fin.close();
    return 0;
}
А в текстовом файле, если вдруг важно, числа лежат в столбик.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:29
Вы файл затираете в строчках 11-12. Они должны выполняться только после неуспешной попытки открыть файл.
1
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:32  [ТС]
Хорошо, значит получается:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    double a, b;
    try
    {
        if (!fin.good())
        {
            throw "File input.txt doesn't exist! Please create it and fill the data";
        }
                // примерно здесь думаю стоит сделать проверку на коректность данных из текстового файла
        fin >> a >> b;
        cout << "K oplate: " << a * b / 100 << " UAH.\n";
    }
    catch (const char* error)
    {
        cout << error << "\n";
    }
    fin.close();
    return 0;
}
Правильно?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:33
Лучший ответ Сообщение было отмечено _easy_ как решение

Решение

_easy_, правильно, но пустой файл создаваться не будет. Если он нужен, добавьте проверку перед теми строчками.
0
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:37  [ТС]
Ну вобщем новый пустой файл не обязателен т.к. есть просто сообщение про отсутствие файла. А вот про наличие данных в определённом их колличестве (2 строчки = 2 переменные) в файле очень даже кстати.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:41
_easy_, второе предложение не понял о чем. Какие то проблемы еще остались?
0
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:47  [ТС]
По факту проверка на наличие самого текстового файла уже работает.
Я хочу добавить вторую проверку. Если файл пустой - выводить сообщение. Как это написать, используя "fseek". И нужна третья проверка на наличие 6 чисел в текстовом файле, често я хз как их сделать
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:49
_easy_, зачем использовать fseek? Сделайте счетчик и увеличивайте его после каждого считывания a и b. Если считано 0 пар значений, то это и будет ваша вторая проверка. Если считано 6 пар значений (или 3?), то это ваша третяя проверка.
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
10.05.2018, 21:19
Цитата Сообщение от _easy_ Посмотреть сообщение
Как это написать, используя "fseek".
Здравствуйте! Проверить файл на пустоту можно, например, так:

C++
1
2
3
4
5
6
7
8
9
bool ifFileIsEmpty() {
    ifstream fin("input.txt");
    long fsize;
    fin.seekg(0, ios::end);
    fsize = fin.tellg();
    if (fsize == 0) return true;
    return false;
    fin.close();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2018, 21:19
Помогаю со студенческими работами здесь

Работа с текстовыми файлами
Здравствуйте, уважаемые !!! Появились проблемы во время решения задачи. Никак не могу решить проблему. Задача такова: Существует...

Работа с текстовыми файлами
3)Разработать программу, которая выполняет следующие действия: создает входной поток для построчного чтения из внешнего файла и выходной...

Работа с текстовыми файлами
Доброго времени суток. Есть ф-ия: void FillM(int **&amp;tab, int &amp;w, int &amp;h) { FILE *f; ...

Работа с текстовыми файлами
Разработать программу, которая: а) создает текстовый файл TF5_1 с символьных строк различной длины; б) читает содержимое файла TF5_1,...

Работа с текстовыми файлами
Доброй ночи. Будте добры, помогите сделать задачу с файлами. Теоретически понимаю что нужно делать, а программно реализовать не могу( ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru