Форум программистов, компьютерный форум CyberForum.ru

Чтение и запись в файл - C++

Восстановить пароль Регистрация
 
Master_Yi
12 / 9 / 1
Регистрация: 22.12.2013
Сообщений: 289
22.12.2013, 14:00     Чтение и запись в файл #1
Задача такая:
Есть файл data.txt, в нем хранятся фамилии, номера телефонов и года регистрации в таком виде:
*fфамилия 1
*nномер 1
*gгод1
*fфамилия 2
*nномер 2
*gгод 2 ...

Нужно сделать так что бы программа читала этот файл и во втором файле вывела в таком виде:

Фамилия 1 Номер 1
Фамилия 2 Номер 2

Количество номеров, которые больше ****, при чем этот год вводится с терминала.

Я уже облазил кучу гайдов, но не сильно я это понимаю. Было бы очень круто получить очень похожий пример такой программы. А проблема в том что я не понимаю как работает чтение файла и выбор нужных данных из него.
Мы идем по файлу посимвольно с помощью "while ( (c=fgetc(in) ) != EOF)", а у меня как минимум 2 символа перед каждым параметром, выходит что я должен как-то проверить что этот символ = * а следующий нужной цифре и уже после этого каким-то чудом скопировать остальное)все что находится далее в строке) и вставить это во второй файл в том месте в котором оно должно быть... -_-" (делится кодом не хочу, вы просто поржать с него сможете...) Поясните, а?

Добавлено через 20 минут
Не могли бы вы написать пример такой програмки если его нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 14:00     Чтение и запись в файл
Посмотрите здесь:

C++ Чтение запись в файл
[C++]Чтение и запись в файл C++
C++ Чтение и запись в файл
Запись и чтение в файл C++
C++ Чтение и запись в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
22.12.2013, 14:16     Чтение и запись в файл #2
У Вас же все расположено по строкам.
Так по строкам и читайте
C++
1
2
3
4
5
6
7
8
char familia[100],nomer[20],god[5];
whlile(!feof(in))
{
     fgets(familia,99,in);
     fgets(nomer,19,in);
     fgets(god,4,in);
     char* ff=familia+2;// ff будет началом фамилии и т.д.
}
Master_Yi
12 / 9 / 1
Регистрация: 22.12.2013
Сообщений: 289
22.12.2013, 15:06  [ТС]     Чтение и запись в файл #3
Один еще вопрос. Я придумал как мне работать с моей задачей. ПРавильно, легче будет работать по строкам, но есть проблема.
И подскажите мне пожалуйста одну вещь.
Я хочу сделать так что бы у меня была одна переменная для всех значений, для каждой строки.
У меня должен быть цикл, который идет по файлу, точнее по 1 строке в файле. После каждого удачного обнаружения строки у меня должен счетчик к++, так что я смогу определять что в этой строке было, ибо фамилии и номера записаны прогрессией с шагом 3.
Мне всего-навсего нужно понять как сделать что бы строка целиком была записана в массив или переменную char, и потом была выведена в файл.
Ну а если можно так же скажите как сделать так что бы вконце вывода данных оставался пробел(тобишь нужен его код), и перенос строки(тоже код, но по-моему это /n).
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
22.12.2013, 16:14     Чтение и запись в файл #4
Я хочу сделать так что бы у меня была одна переменная для всех значений, для каждой строки.
В примере так и сделано, каждый раз данные читаются в текстовые массивы familia, nomer, god.
У меня должен быть цикл, который идет по файлу, точнее по 1 строке в файле.
В примере такой цикл реализован.
После каждого удачного обнаружения строки у меня должен счетчик к++,
Объявите ink k=0; перед циклом, а внутри добавьте k++.
Мне всего-навсего нужно понять как сделать что бы строка целиком была записана в массив или переменную char, и потом была выведена в файл.
В примере так и сделано, каждый раз данные читаются в текстовые массивы familia, nomer, god. В одну переменную можно прочитать только одну букву, поэтому используем массивы.
Ну а если можно так же скажите как сделать так что бы в конце вывода данных оставался пробел(тобишь нужен его код), и перенос строки(тоже код, но по-моему это /n)
Добавляйте в нужное место символ ' ' (внутри одинарных скобок один пробел) или '\n' (конец строки).
Например, добавить в конец строки можно так
C++
1
2
3
int L=strlen(familia);
familia[L]='\n';
familia[L+1]=0;// строка обязана кончаться числом 0
Master_Yi
12 / 9 / 1
Регистрация: 22.12.2013
Сообщений: 289
23.12.2013, 23:05  [ТС]     Чтение и запись в файл #5
Цитата Сообщение от zss Посмотреть сообщение
char* ff=familia+2;// ff будет началом фамилии и т.д.
А можно понять что это делает? Точнее, что это значит?
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
24.12.2013, 08:02     Чтение и запись в файл #6
familia - адрес первой буквы familia[0];
familia+2 - адрес третьей буквы familia[3];
т.о. ff[0] - это тоже третья буква.
Т.е. получается, что 2 первых буквы пропускаем.
Yandex
Объявления
24.12.2013, 08:02     Чтение и запись в файл
Ответ Создать тему
Опции темы

Текущее время: 13:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru