Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 12

Программа не выдает сообщение об ошибке

22.07.2011, 06:30. Показов 2745. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Есть программа, которая должна прочитать 10 чисел из файла input.dat, умножить каждое из них на 2 и записать результат в output.dat. От себя добавил только #include <conio.h> и getch :

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <conio.h>
 const int N = 10;
 main()
{
   int i, A[N];
   FILE *fp; // указатель на файл
   fp = fopen( "C:\\Data\\input.dat", "r" ); // открыть файл на чтение
     if ( fp == NULL ) { // обработка ошибки
       printf("Нет файла данных");
       getch ();
       return 1; // выход по ошибке, код ошибки 1
}
 
   for ( i = 0; i < N; i ++ )
     if ( 0 == fscanf(fp,"%d",&A[i]) ) { // чтение и обработка
      printf("Не хватает данных в файле"); // ошибки
      getch ();
      break;
}
   fclose ( fp ); // закрыть файл
    for ( i = 0; i < N; i ++ )
    A[i] = A[i] * 2;
   fp = fopen( "C:\\Data\\output.dat", "w" ); // открыть файл на запись
    for ( i = 0; i < N; i ++ ) // вывести массив в файл
          fprintf ( fp, "%d\n", A[i] ); // в столбик
          fclose ( fp );
}
Если файла input.dat нет, программа как положено выдает сообщение "Нет файла данных". Если в файле есть числа (через пробел или построчно) - считает и создает файл/перезаписывает файл output.dat с правильными результатами (все числа умножены на 2). Но если файл input.dat пустой, то вместо вывода задуманного сообщения об ошибке - "Не хватает данных в файле", записывает в output.dat результат такого вида (цифры каждый раз разные):

-1787724184
-4
-281464396
-281329164
9577392
9577024
4587120
-281330118
0
0


По задумке, программа должна выдавать сообщение об ошибке, если файл input.dat пуст, т.е. в нем нет данных (или их не хватает). Предположил, что возможно в этой строчке:

if ( 0 == fscanf(fp,"%d",&A[i]) ) { // чтение и обработка

ошибка и нужно исправить на:

if ( fscanf(fp,"%d",&A[i]) == 0) { // чтение и обработка

но результат не изменился.

Думаю это не со средой и компилятором связано, а с самим примером (но на всякий случай - пробовал на Dev-С++ и Code::Blocks).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.07.2011, 06:30
Ответы с готовыми решениями:

BIOS выдает сообщение об ошибке при загрузке
BIOS при загрузке пишет &quot;New CPU installed. Enter to Setup for configure your system. Press F1 to enter setup&quot;. Соответственно...

В Excel перестали открываться PowerPivot и PowerView, выдает сообщение об ошибке
Всем добрый день! Такая проблема: В Excel перестали открываться PowerPivot и PowerView, ранее все открывалось. При нажатии на...

При инсерте выдает сообщение об ошибке, не пойму что не так?
Доброго времени суток. Решил попробовать разобраться с Postgresql субд. собственно есть таблица Profession, которая создается скриптом(для...

21
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.07.2011, 12:27
Студворк — интернет-сервис помощи студентам
За тхт при fprinf в случае чисел (-INF;INF) невыполнение условия
C++
1
if(fLen < sizeof(int)*N)
подавно будет говорить что файл не содержит всех элементов...
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.07.2011, 14:05
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Хорошо убедил, так правильно будет
Нет, не правильно.
Если в файле 9 из 10 чисел, то сообщение об ошибке не будет выведено.

Разжую по буквам:
Нужно считать 10 чисел, в файле только 9
Считали 9 чисел, перешли на считываение десятого
i РАВНО 9
EOF достигнут!
ЕСЛИ( Девять МЕНЬШЕ чем Десять минус Один ) то Ашипка!

Внимание, вопрос: Девять меньше Девяти?

Понятненьтко?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2011, 14:05

Почему конструкция try finally end все равно выдает сообщение об ошибке?
Почему при использовании конструкции try .. except end; при возникновении ошибки программа просто продолжает свой путь без...

Неправильный логин и неправильный пароль, программа не выдает сообщения об ошибке
Вообщем проблема такова: DBConnect-&gt;ConnectionString = &quot;Provider=SQLOLEDB.1;Password=&quot; + password + &quot;;Persist Security...

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

При загрузке компьютер выдает сообщение об ошибке: "NTLDR is missing. Press Ctrl+Alt+Del to restart"
Help!!!ребята выручайте!при загрузке компьютера выдает ошибку &quot;NTLDR is missing ctrl+alt+del to restart&quot; помогите...

Сообщение об ошибке «Программа "Подключение к удаленному рабочему столу" не работает»
Добрый день Помогите с RDP В приложенном файле файл ProcDump


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru