Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
HERETIC
91 / 91 / 13
Регистрация: 10.10.2008
Сообщений: 606
Завершенные тесты: 1
#1

Некорректная работа функции fscanf - C++

13.05.2014, 22:41. Просмотров 347. Ответов 9
Метки нет (Все метки)

Пишу прогу. Нужно считать из файла данные. Читаю при помощи fscanf. В итоге прога вроде работает, а вот в переменной куда считываю оказывается белиберда. Подскажите мою ошибку?
Текст проги:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<conio.h>
 
using namespace std;
 
int main()
{
   setlocale(LC_ALL, "Rus");
   FILE* SOUR;
   if((SOUR = fopen("SOURCE_DOS.TXT", "rt")) == NULL)
      printf("Не удается открыть файл.");
   char T[900];
 
   fscanf (SOUR, "%474c", &T);
   fprintf(stdout, "%c", T); // для проверки
}
Это только выборка из проги - тот кусок который не работает. Файл SOURCE_DOS.TXT во вложении. Помогите срочно нужна помощь.
http://www.cyberforum.ru/cpp-beginners/thread1123241.html
0
Вложения
Тип файла: txt SOURCE_DOS.TXT (1.0 Кб, 5 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2014, 22:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Некорректная работа функции fscanf (C++):

Шаблон функции. Некорректная работа
Здравствуйте. Проблема такая: ниже приведенный код почему то некорректно...

Некорректная работа повторно вызываемой функции
wstring fdirection(void) { wcout &lt;&lt; L&quot;Введите путь к файлу, который хотите...

Некорректная работа функции _getch() в Release конфигурации
Всем привет. Если кратко, то есть код: #include &lt;iostream&gt; #include...

Некорректная работа функции нахождения "квадрата единиц" в двумерном массиве
Задание: Задан квадратный массив А из N стpок и N столбцов, элементами которого...

Идентификатор функции fscanf
Здравсвуйте какой идентификатор поставить чтобы считывалось дробное число из...

9
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
13.05.2014, 23:18 #2
Попробуй так:
C++
1
2
  fscanf (SOUR, "%s", T);
  fprintf(stdout, "%s", T); // для проверки
0
HERETIC
91 / 91 / 13
Регистрация: 10.10.2008
Сообщений: 606
Завершенные тесты: 1
13.05.2014, 23:49  [ТС] #3
Так вроде бы работает, но считывает только 78 символов. Не доганяю, fscanf считывает только до конца строки что ли????. А мне то нужно грубо говоря считать всю "шапку" из файла, а это 474 символа.
0
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
13.05.2014, 23:58 #4
можно так:
C++
1
2
3
fscanf (SOUR, "%474c", T);
   T[474]=0;
   fprintf(stdout, "%s", T); // для проверки
но это извращение
1
HERETIC
91 / 91 / 13
Регистрация: 10.10.2008
Сообщений: 606
Завершенные тесты: 1
14.05.2014, 00:06  [ТС] #5
Цитата Сообщение от zer0mail Посмотреть сообщение
можно так:

C++
1
2
3
fscanf (SOUR, "%474c", T);
 T[474]=0;
 fprintf(stdout, "%s", T); // для проверки
Так код работает. Но вот почему мой код не работает. В чем ошибка-то. Что-то видимо я не понимаю.
0
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
14.05.2014, 00:14 #6
В буфер данные читаются правильно, а при выводе по "%c" выводится младший байт адреса буфера Т (он передается в параметр функции).
0
HERETIC
91 / 91 / 13
Регистрация: 10.10.2008
Сообщений: 606
Завершенные тесты: 1
14.05.2014, 00:19  [ТС] #7
А если я напишу так:
C++
1
fprintf(stdout, "%474c", T);
то тоже получиться на выходе фигня.
0
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
14.05.2014, 00:33 #8
Все равно выведется младший байт адреса буфера, только перед ним будет 473 пробела.
0
HERETIC
91 / 91 / 13
Регистрация: 10.10.2008
Сообщений: 606
Завершенные тесты: 1
14.05.2014, 00:37  [ТС] #9
Ясно спасибо за помощь. Я кстати отправил сообщение в личку. Может поможешь?
0
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
14.05.2014, 00:41 #10
Я против личных обращений с просьбами о помощи.
Это форум - каждый сам решает, кому и как помогать. Кроме того, ответы могут быть полезны другим.
0
14.05.2014, 00:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2014, 00:41
Привет! Вот еще темы с решениями:

Аналог функции fscanf (C++)
Здравствуйте. По заданию нужно написать аналог функции fscanf на языке C++....

Некорректная работа компилятора
простая схема для метода пузырькового упорядочения /* * Проект 4-1....

Некорректная работа цикла for.
Ниже приведен код программы, вычисляющей по заданному n значение n!. Прошу...

Некорректная работа _getch()
При очень быстром нажатии двух клавиш подряд _getch() ловит два символа. И...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru