Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файлы последовательного доступа 
:(
    Опции темы
Gem
Дата 12.8.2004, 12:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пытаюсь разобраться в TC с файлами последовательного доступа по учебе. Несколько проблематично sad.gif . Поможите.

Допустим в файл занесено несколько строк:

Размер - 44
Цена - 2000


, где числа 44 и 2000 были внесены с клавы. Файл был закрыт, а затем открыт для чтения.
Каким образом мне считать в переменную число 2000?
  Вверх
Конструктор
Дата 12.8.2004, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Читай первую строку. (fgets)
Потом читай вторую. (Тем же fgets)
Из строки выбирай число и пихай в переменную.

PM MAIL WWW ICQ   Вверх
Gem
Дата 12.8.2004, 13:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Насколько я понимаю разницы между fgets и fscanf нет - результат один. Так вот, используя fscanf, переменная (дОлжная быть равной второй строке) содержит слово "Размер". Если же оставить одни цифры, т.е. первая строка - "44", вторая - "2000", то все идет без проблем. Но такой урезанный файл меня не устраивает.
  Вверх
Конструктор
Дата 12.8.2004, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Нет отличия есть.
fscanf читает до первого символа разделителя. В этом случае это пробел. fgets читает всю строку целиком включая символ возврата каретки и перехода на следующую строку '\n', поэтому его надо удалять врчную если это необходимо. Я если честно fscanf вообще никогда не юзал или fgets или fread.



PM MAIL WWW ICQ   Вверх
Gem
Дата 16.8.2004, 08:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да, с fgets считывает, что нужно. Спасибо. Вот только предупреждение выдает

"Suspicious pointer conversion " на строку
fgets(cost,15,suit)
, где cost - указатель на символьный массив; suit - файловый указатель
На это глаза закрыть можно?

Цитата
Из строки выбирай число и пихай в переменную.


какую функцию лучше использовать?
  Вверх
Конструктор
Дата 16.8.2004, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Здесь верятно придется делать ручками. Просматриваешь все символы строки, когда найдешь хоть одну цифру, значит пошло значение переменной. Считываешь во временный массив все цифры которые встретятся после найденной. Не забываешь так-же дописать в конец временного массива нуль-терминатор. Затем переводишь полученный временный массив, в котором должна получиться строка с числовым значением переменной в число (ф-ции atoi или atol из stdlib).

PM MAIL WWW ICQ   Вверх
Gem
Дата 16.8.2004, 10:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Посимвольно массив не просматриваю, просто с определенного места определнное количество символов копирую в новый массив. Работает. Спасибо за помощь.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.