
Int feof (file *f);
Функция возвращает значение “истина” (не 0), если достигнут конец файла, и значение “ложь” (0) в противном случае.
Пример 13.11. Файл f1.txt содержит последовательность целых чисел, разделенных пробелами или символом перевода строки. Вычислить сумму чисел.
#include <stdio.h>
void main()
{ FILE *f;
int c; /* очередное число */
long s=0; /* сумма */
if (f=fopen(“f1.txt”, “r”))
{ while (!feof(f))
{ fscanf(f, “%d”, &c);
s+=c;
}
printf(“Сумма=%ld\n”, s);
fclose (f);
}
else puts (“Файл f1.txt не найден”);
}
Контрольные вопросы и упражнения
1. Определите результат выполнения фрагмента программы:structA{inta,b; };structAs= {10, 20};printf(“%d”,s.a+s.b);
2. Определите результат выполнения фрагмента программы:
struct
{ char a[10]; int b;
} s = {“Москва”, 155};
printf (“%d, %s”, s.b, s.a);
3. Объявлены переменные:structA{intx;
floaty;
} s, *p= &s;
Как можно полям x, yобъявленной структурной переменной присвоить значения 10 и 5.5?
4. Определите результат выполнения фрагмента программы:
struct A
{ int x; char y[10];
} s, *t = &s;
t –>x = 2006;
strcpy (t –>y, “май”);
printf (“%s %d”, s.y, s.x);
5. Опишите структуру из 4-х полей:
- признак того, можно ли изменять другие поля (равен 1 или 0);
- массив из 100 пятибуквенных слов;
- целое число;
- вещественное число.
Опишите структурную переменную и указатель на эту переменную.
6.Опишите массив из 30 записей (структур). Каждая запись состоит из 4-х полей, описывающих часть анкетных данных спортсмена:
- фамилия, имя и отчество;
- год рождения;
- рост в метрах (например, 1.85);
- вес в кг.
7. Определите результат выполнения фрагмента программы:
int F (int a, int b)
{ if (a<b) return a+b;
return a-b;
}
void main()
{ struct
{ int n1, n2;
} s = {30, 20};
printf (“%d”, F(s.n1, s.n2));
…
}
8. Что представляет собой текстовый файл в MS DOS?
9. Для чего служит функция fopen()?
10. Для чего служит функция fclose()?
11. Дан текстовый файл f1.txt, состоящий из строк длиной до 80 символов. Напишите программу печати первых n строк файла. Значение n вводится с клавиатуры.
12. Дан текстовый файлf1.txt, состоящий из строк длиной до 80 символов. Напишите фрагмент ввода с клавиатуры и добавления в конец файлаnстрок. Значениеn также вводится с клавиатуры.
Контрольные задания
Введите и выполните программу из примера 13.9. Создайте файл st.txt для проверки программы и снова запустите программу.
Пример входного файла st.txt:
1 16 20
-------------------------------
Анисимов А.И. 54435
Берхеев П.В. 55445
Вавилова С.Н. 45343
. . .
Измените файл st.txt так, чтобы поле фамилии занимало 20 позиций, а оценок было 4. Соответственно измените программу (для удобства задайте именованные константы). Проверьте результат ее работы.
Измените программу, чтобы выводился список только тех студентов, у которых
а) средний балл ниже 4;
б) средний балл выше 4 и нет двоек;
в) только хорошие и отличные оценки;
г) есть двойки;
д) все пятерки;
е) больше одной двойки.
Добавьте определение среднего балла группы.