Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Horersey
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 22
1

Неправильно работает програма с fscanf

09.05.2012, 16:11. Просмотров 741. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток. Задание прочитать файл и вывести все ведомости про курсы, в которых не предвиденных лаб. робот( тоесть 0).

В бинарном файле(*.DAT) содержится вот что:

Курс Количество лекций Количество лаб. робот
Физика 20 15
Выш.мат 41 62
Философия 30 0


Результат должен быть: Философия 30 0

C++
1
2
3
4
5
6
7
8
9
10
11
FILE *F;
F=fopen("COUKSE2.DAT", "rb");
if(F==NULL){ShowMessage("немогу открыть файл");return;}
char curs[17];int kolvo_leckciy; int kolvo_lab;
Memo1->Lines->Add("Курсы в которых нет лаб.робот");
do{
fscanf(F,"%s%i%i",&curs,&kolvo_leckciy,&kolvo_lab);
if(kolvo_lab==0)
Memo1->Lines->Add(AnsiString(curs)+"   "+IntToStr(kolvo_leckciy)+"    "+IntToStr(kolvo_lab));
}while(!feof(F));
fclose(F);
В итоге по нажатию на кнопку пишет: Курсы в которых нет лаб.робот
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 16:11
Ответы с готовыми решениями:

Неправильно работает if
Есть задача Если сумма трех попарно различных действительных чисел x, y, z меньше единицы,...

Неправильно работает strcat
Всем привет! Прошу помощи у знающих, сам никак не могу справиться... Имеется код: char* editor...

Неправильно работает Randomize()
Здравствуйте, функция случайности, как то странно работает. void __fastcall...

Неправильно работает пауза в while
Задача стоит в том, чтобы показать пошаговое выполнение одного алгоритма. Реализацию самого...

Файлы. Программа неправильно работает. :)
Написал программу с файлами. Но при тестировании неправильно работает. Посмотрите пожалуйста. ...

8
Avazart
Эксперт С++
7803 / 5702 / 561
Регистрация: 10.12.2010
Сообщений: 25,995
Записей в блоге: 17
09.05.2012, 17:40 2
C++
1
fscanf(F,"%s%i%i",curs,&kolvo_leckciy,&kolvo_lab); // без & перед char[]
0
Horersey
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 22
09.05.2012, 17:44  [ТС] 3
Цитата Сообщение от Avazart Посмотреть сообщение
C++
1
fscanf(F,"%s%i%i",curs,&kolvo_leckciy,&kolvo_lab); // без & перед char[]
Неа, все равно такой же результат.

Приложу файл которым проверяю
0
Вложения
Тип файла: rar COUKSE2.rar (159 байт, 4 просмотров)
Avazart
Эксперт С++
7803 / 5702 / 561
Регистрация: 10.12.2010
Сообщений: 25,995
Записей в блоге: 17
09.05.2012, 17:50 4
C++
1
F=fopen("COUKSE2.DAT","r");// файл  та текстовый!?
Добавлено через 1 минуту
Уберите
C++
1
Memo1->Lines->Add("Курсы в которых нет лаб.робот");
И не будет писать...
0
Horersey
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 22
09.05.2012, 17:55  [ТС] 5
Цитата Сообщение от Avazart Посмотреть сообщение
C++
1
F=fopen("COUKSE2.DAT","r");// файл  та текстовый!?
бинарный

Цитата Сообщение от Avazart Посмотреть сообщение
Добавлено через 1 минуту
Уберите

C++
1
Memo1->Lines->Add("Курсы в которых нет лаб.робот");
И не будет писать...
Дык мне нужно
Курсы в которых нет лаб.робот
Философия 30 0
0
Avazart
Эксперт С++
7803 / 5702 / 561
Регистрация: 10.12.2010
Сообщений: 25,995
Записей в блоге: 17
09.05.2012, 18:17 6
бинарный
Тогда нефиг использовать текстовую ф-цию
Используйте
C++
1
2
fwrite(); // Запись
fread();// Чтение
0
Horersey
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 22
09.05.2012, 18:18  [ТС] 7
Цитата Сообщение от Avazart Посмотреть сообщение
Тогда нефиг использовать текстовую ф-цию
Используйте
C++
1
fwrite();
а как будет выглядеть запись?
0
Avazart
Эксперт С++
7803 / 5702 / 561
Регистрация: 10.12.2010
Сообщений: 25,995
Записей в блоге: 17
09.05.2012, 18:21 8
http://www.cplusplus.com/reference/clibrary/cstdio/fread/
http://devoid.com.ua/functions-about/c-functions/fread.html
1
Horersey
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 22
10.05.2012, 00:20  [ТС] 9
В общем я кое как переделал код и теперь все работает нормально, вот только я смутно понимаю как работает функция fread, может кто на пальцах объяснить?


Код
while(true){
fread(&curses,sizeof(Tcurs),1,F);
if(feof(F))break;
if(curses.Kolvo_lab==0)
Memo1->Lines->Add(AnsiString(curses.curs)+"     "+IntToStr(curses.Kolvo_lekciy)+"         "+IntToStr(curses.Kolvo_lab));}
вот мой цикл, в котором все делается
0
10.05.2012, 00:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2012, 00:20

DetectMultiScale неправильно работает в консоли
Написал программу для определения лиц, глаз и рта, когда запускаю приложение в Visual Studio все...

После спящего режима неправильно работает
Доброго времени суток!!! Я получаю данные из интернета через IdHTTP, код: try { List->Text...

Калькулятор с множеством функции. Неправильно работает факториал
В обще есть такое задание сделать простейший калькулятор, а к нему добавить 10 своих функции. Я...


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

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

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