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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При чтении файла в его конец добавляются цифры. 
:(
    Опции темы
Sammi2186
Дата 10.12.2013, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.11.2013

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



В файле записано такое:
3 9 3 4 5
5 4 3 2 1
1 3 -3 2 9
1 5 3 6 2
5 3 7 8 9
6 3 8 9 20

Далее я начинаю подсчет цифр в нем, не важно для чего. Вообще при чтении добавляются некоторые цифры в конец файла:
Код
if(!(file1=fopen(argv[1], "r")))
    {
        printf("Ошибка открытия файла\n");
        return;
    }
    
    while(!(feof(file1)))
        if(isdigit(c=fgetc(file1)))
            i++;

Иногда эти цифры могут убраться, а иногда - нет.
Перед ННННННН добавились 9 20. Из-за них все неправильно работает. Подскажите, пожалуйста, из-за чего происходит?

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Безымянный.png 127,93 Kb
PM MAIL   Вверх
Alexeis
Дата 10.12.2013, 16:06 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



  Просто строка в С++ должна завершаться нулем, чтобы правильно отображаться. В файле нет завершающих нулей, там строки обычно разделяются символами возврата каретки, а в самом конце ничего нет. Этот самый ноль нужно записать самостоятельно после того как вычитался весь файл.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sammi2186
Дата 10.12.2013, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.11.2013

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



Цитата(Alexeis @ 10.12.2013,  16:06)
Просто строка в С++ должна завершаться нулем, чтобы правильно отображаться. В файле нет завершающих нулей, там строки обычно разделяются символами возврата каретки, а в самом конце ничего нет. Этот самый ноль нужно записать самостоятельно после того как вычитался весь файл.

Но как я узнаю, где его конец?
Мне нужно посчитать количество строк в файле. Я не знаю заранее, сколько их. Но я знаю, сколько цифр в каждой строке. В моем файле, в каждой строке 5 цифр. Я считаю общее количество цифр, чтобы поделить на 5, и получу количество строк. Это глупо, да? Но из-за этих лишних, появляющихся цифр количество реально существующих цифр не такое, как должно быть. Т.е. должно быть 30 цифр, а из-за 9 и 20 получается 32 цифры. 


Это сообщение отредактировал(а) Sammi2186 - 10.12.2013, 16:15
PM MAIL   Вверх
Sammi2186
Дата 10.12.2013, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.11.2013

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



Я неправильно написал здесь. 
Код

while(!(feof(file1)))
        if(isdigit(c=fgetc(file1)))
            i++;

Это сработает только для однозначных положительных чисел. Можно так:
Код

while(!(feof(file1)))
        if(fscanf(file1, "%d", j))
            i++;


Добавлено @ 16:37
Кажется все работает. 
Код

while((fscanf(file1, "%d", &j))!=EOF)
        i++;   

Спасибо. Решено вроде.

Это сообщение отредактировал(а) Sammi2186 - 10.12.2013, 16:37
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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