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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение из потока используя fscanf, считывается больше символов чем задано 
:(
    Опции темы
GraNit
Дата 9.7.2013, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте, уважаемые!!!

Столкнулся со следующе проблемой. В двоичном файле есть данные, которые я читаю fscanf-ом. Ранее использовал собственную процедуру, все работало,  fscanf почему-то считывает больше символов чем я задаю в аргументе.
Пример:
Код

        fscanf(handle,"%7c",Data->socstat); //Социальное положение
        fseek(handle,1,SEEK_CUR);
        fscanf(handle,"%20c",Data->bcity); //Место рождения

в результате получаю следующее
Соц. положение - MariedKrasnoyarsk
Место рождения - Krasnoyarsk
При пошаговой трассировке в поле "соц.положение" "дополнительные" данные попадают сразу после считывания поля "место рождения".
Не понимаю почему!?  smile 
Прошу помощи.
P.S. почему нужен fseek между ними, там разделительный символ, 0x07 кажется, поэтому мы его проходим.

Это сообщение отредактировал(а) GraNit - 9.7.2013, 12:45
PM MAIL   Вверх
volatile
Дата 9.7.2013, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(GraNit @  9.7.2013,  12:42 Найти цитируемый пост)
fscanf почему-то считывает больше символов чем я задаю в аргументе.

Он не считывает больше. Это вы печатаете больше чем он считал.
Терминировать надо, хотябы:

Цитата(GraNit @  9.7.2013,  12:42 Найти цитируемый пост)
        fscanf(handle,"%7c",Data->socstat); //Социальное положение
        Data->socstat [7] = 0;
        fseek(handle,1,SEEK_CUR);


Добавлено через 5 минут и 5 секунд
Надеюсь что в Data->socstat место для терминирующего 0 есть ?
В чем я, смотря  теперь на ваш вывод, очень сомневаюсь  smile
Цитата(GraNit @  9.7.2013,  12:42 Найти цитируемый пост)
MariedKrasnoyarsk


PM MAIL   Вверх
GraNit
Дата 10.7.2013, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Точно, раздвинул на 1 символ и НА ТЕБЕ! все работает smile
Спасибо, volatile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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