Построчное чтение из файла - C (СИ) (77947)
Формулировка задачи:
в файле числа от -50 до 50, записанные каждое в отдельной строке. нужно посчитать сумму отрицательных элементов файла
Чего не хватает?
for (i=0; i<50; i++)
{
fscanf(fo,"%d\n",&y);
if(y<0)
{
t+=y;
}
}Решение задачи: «Построчное чтение из файла»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
int i,n[50],sum,val;
for (i=0; i<50; i++)
{
n[i]=rand()%100-50;
}
FILE*fo;
fo=fopen("chisla.txt","wt");
for (i=0; i<50; i++)
fprintf(fo, "%d\n",n[i]);
fclose(fo);
fo=fopen("chisla.txt", "r");
if(!fo)
printf("Error open data.txt\n");
else
{
while(!feof(fo))
{
if(fscanf(fo,"%d\n",&val))
if(val < 0)
sum += val;
}
fclose(fo);
printf("Sum of negative : %d\n",sum);
}
getch();
}
Объяснение кода листинга программы
- Объявлены массив n[50] и переменная sum для хранения суммы отрицательных чисел.
- В цикле for заполняется массив n[50] случайными числами от -50 до 50.
- Открывается файл
chisla.txtдля записи (режимwt). - В цикле for числа из массива n[50] записываются в файл
chisla.txtс помощью функции fprintf. - Файл закрывается функцией fclose.
- Открывается файл
chisla.txtдля чтения (режимr). - Проверяется, открылся ли файл успешно, при неудаче выводится сообщение об ошибке.
- Если файл успешно открыт, то в цикле while с помощью функции fscanf считываются числа из файла.
- Если считанное число отрицательное, то оно прибавляется к сумме.
- После окончания чтения файла, закрывается файл
chisla.txt. - Выводится сообщение с суммой отрицательных чисел.
- Программа завершается вызовом функции getch.