Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2015, 16:01   #1
anestezy
 
Регистрация: 27.04.2015
Сообщений: 4
По умолчанию Не считывает float из файла

Доброго времени суток форумчане! Это второй форум на котором я ищу решение на такую проблему:Суть проблемы : программа работала раньше -как часы, потом в структуре поменял поле с int на doublle. также везде поменял scanf(чтобы считывало не int , а float). И всё теперь не хочет считывать. bc 3.1++.
это старая рабочая с int: copy KURSOV~1.txt
это новая -нерабочая KURSOV~1 — копия.txt
Повторяю проблема в том что :записывает в файл совсем не то (0.00), пропускает поле ввода price в bc 3.1++
В отладчике работает
HD 1.0 : HexDump for file 'struct.dat' [00000000:0000001C]

00000000: 31 0D 0A 31 0D 0A 32 0D 0A 33 0D 0A 34 0D 0A 35 1..1..2..3..4..5
00000010: 0D 0A 36 2E 30 30 30 30 30 30 0D 0A ..6.000000..
но мне нужно её запустить в bc3.1++. Если есть идеи, пожалуйста помогите!
anestezy вне форума Ответить с цитированием
Старый 27.04.2015, 16:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
поменял поле с int на doublle
Где? Не вижу.
%f для float
%lf для double
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.04.2015, 17:11   #3
anestezy
 
Регистрация: 27.04.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Где? Не вижу.
%f для float
Так всё же стоит!
fscanf(f,"%f",&(tmp->price));

ошибся здесь
Цитата:
Сообщение от anestezy Посмотреть сообщение
потом в структуре поменял поле с int на doublle.!
правильно-с int на float!
просто уже по всякому менял нечего не помогает(, а курсовой сдать нужно

Есть набор данных в файле
Код:
2
1
1
1
1
1
1.1
2
2
2
2
2
2.2
Ожидаеться что : на экран выведет значения равные этим полям ,а именно первая запись:
Nazvanie lekarstva - 1
Profil primeneniya -1
Proizvoditel-1
Pokazaniya k primeneniyu-1
Dozirovki-1
Stoimost'-1.1
вторая запись:
Nazvanie lekarstva - 2
Profil primeneniya -2
Proizvoditel-2
Pokazaniya k primeneniyu-2
Dozirovki-2
Stoimost'-2.2

Получено:
Безымянный111.jpg
Запускаю программу в bc 3.1++ нажимаю 4(вывод данных )получаю такой результат.

Хочу ещё раз повторить : что с int price -всё работает отлично!

Последний раз редактировалось Stilet; 27.04.2015 в 17:39.
anestezy вне форума Ответить с цитированием
Старый 27.04.2015, 17:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
fscanf(f,"%s",tmp->dosage);
fscanf(f,"%f",&(tmp->price));
А почему через &? А предидущие нет. Ась?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.04.2015, 18:12   #5
anestezy
 
Регистрация: 27.04.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А почему через &? А предидущие нет. Ась?
Ну предыдущие поля же яв-ся массивом типа-char[] , а к ним доступ происходит без взятия адреса. Если я правильно Вас понял.

Просто я уже сижу очень долго над этой задачей и нечего не получается.

Если я неправильно понял , то пожалуйста укажите поподробнее что вы имеете ввиду!
anestezy вне форума Ответить с цитированием
Старый 27.04.2015, 18:38   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

К сожалению твой код протестировать не могу, ибо там смесь Си и Си++, которую мой GCC отказывается переваривать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.04.2015, 18:46   #7
anestezy
 
Регистрация: 27.04.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
К сожалению твой код протестировать не могу, ибо там смесь Си и Си++, которую мой GCC отказывается переваривать.
укажите пожалуйста что там из с++!

это чистый си , запускаю на стареньком borlandc для dos, под dosbox'ом с ос windows 8.1 . Вариант с int прикреплённый первым файлом -прекрасно работает, но вот с float -не корректно записывает в поток float. Если есть идеи как сделать с float , что бы считывало правильно - пишите.

Ну всё равно ,благодарен за внимание!

Последний раз редактировалось Stilet; 27.04.2015 в 19:39.
anestezy вне форума Ответить с цитированием
Старый 27.04.2015, 19:39   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это чистый си
Цитата:
tmp=new list;
https://ru.wikipedia.org/wiki/New_%28C++%29
Вот такие вот пирожки. Просто Борланду как и Микрософту на жесткость стандартов побоку.

P.S. Если оч. хочешь могу попробовать набросать скетч того как я вижу со своей колокольни решение твоей задачи.
Так то есть вот такое: http://www.programmersforum.ru/showthread.php?t=105501
Это я частенько рекомендую на форуме, но можно и под твой текстовый вариант адаптировать или написать наново.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не считывает из файла.Disk read error yzen Помощь студентам 3 11.06.2013 15:31
Написать программу которая считывает текст из файла. Rinat777 Общие вопросы C/C++ 1 18.04.2013 21:23
Exception когда считывает с файла Natok Помощь студентам 1 22.04.2011 11:25