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

Считывание с файла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
KиT
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 5
17.11.2011, 10:49     Считывание с файла #1
Нужно считать с текстового файла числа не зная их количество, вроде не сложно, но как не пробую считывает бред какой то. Кто нить помогите, надо срочно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 10:49     Считывание с файла
Посмотрите здесь:

Считывание из файла C++
Считывание файла C++
C++ Считывание из файла в С++
C++ считывание из файла
считывание с файла... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.11.2011, 11:00     Считывание с файла #2
Цитата Сообщение от KиT Посмотреть сообщение
но как не пробую
показывайте как пробуете
KиT
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 5
17.11.2011, 11:03  [ТС]     Считывание с файла #3
пробовал использовать функцию feof
FILE *f;
. . .
while (!feof(f))
{
int c = fgetc(f);
. . .
}
greshnikk
 Аватар для greshnikk
30 / 30 / 0
Регистрация: 05.11.2008
Сообщений: 162
17.11.2011, 11:11     Считывание с файла #4
Цитата Сообщение от KиT Посмотреть сообщение
пробовал использовать функцию feof
C++
1
    int c = fgetc(f);
Функция fgetc считывает один символ (char). Для того, чтобы считывать число, нужно прочитать строку целиком(fgets) и далее ее распарсить (обработать). То есть все что до пробела, будет считаться числом. До следующего пробела - следующее число, и так далее.
Замечание: Может оказаться так, что количество чисел, находящихся в файле, будет превышать буфер для хранения строки, надо обязательно учесть этот момент.
KиT
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 5
17.11.2011, 11:14  [ТС]     Считывание с файла #5
а можно по подробнее про "распарсировать" ? чем это делается ?
greshnikk
 Аватар для greshnikk
30 / 30 / 0
Регистрация: 05.11.2008
Сообщений: 162
17.11.2011, 11:23     Считывание с файла #6
Цитата Сообщение от KиT Посмотреть сообщение
а можно по подробнее про "распарсировать" ? чем это делается ?
Пример навскидку, самый грубый (прошу простить меня за это). Вот у нас получилась строка такого вида "12 321 287". Копируем строку до пробела, исключая пробел, в массив, не забыв при этом сохранить количество скопированных символов n (по факту количество цифр в числе). После этого нужно из строки "12" сделать число 12. Заводим переменную целочисленного типа, которая равна первый символ * 10^(n-1) + второй символ * 10^(n-2). Что получится: 1*10 + 2 * 1 = 10 + 2 = 12.
Рассмотрим следующий случай: 3*10^(n-1) + 2*10^(n-2) + 1*10^(n-3) = 3*100 + 2*10 + 1 = 321.
KиT
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 5
17.11.2011, 11:40  [ТС]     Считывание с файла #7
спасибо за метод, а есть способ просто узнать количество элементов, не считывая строку полностью ?
greshnikk
 Аватар для greshnikk
30 / 30 / 0
Регистрация: 05.11.2008
Сообщений: 162
17.11.2011, 12:04     Считывание с файла #8
Цитата Сообщение от KиT Посмотреть сообщение
спасибо за метод, а есть способ просто узнать количество элементов, не считывая строку полностью ?
Скорее всего нет. По крайней мере, я такой придумать не могу. Кстати, Вы можете заметить, что тот способ что предложил я, не считывает строку полностью в общем случае. Он считывает не больше чем размер буфера.
KиT
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 5
17.11.2011, 12:08  [ТС]     Считывание с файла #9
еще раз спасибо, попробую реализовать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 12:22     Считывание с файла
Еще ссылки по теме:

C++ Считывание с файла
C++ Считывание из файла
Считывание с файла C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.11.2011, 12:22     Считывание с файла #10
C
1
2
    while (fscanf(ifp, "%d", &a[i]) == 1)
        i++;
Yandex
Объявления
17.11.2011, 12:22     Считывание с файла
Ответ Создать тему
Опции темы

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