Ввод-вывод символьных массивов в файл

Выполняется функциями fgets() и fputs().

Рассмотрим использование функций на примере:

#include<stdio.h>

#define MAX 80

void main()

{

FILE *f;

char string[MAX];

f=fopen(“story”,”r”);

while(fgets(string,MAX,f)!=NULL)

fputs(string, stdout);

}

Данная программа выводит содержимое файла “story” в стандартный файл вывода (на экран) строка за строкой.

Функция fgets() имеет три аргумента: символьный массив, предельную длину считываемой строки и указатель на файл. Функция прекращает работу при считывании символа новой строки или после считывания символов общим числом меньше на единицу, чем указывает второй аргумент (в данном примере 79). В любом случае символ ‘\0’ добавляется в конец строки.

Функция возвращает NULL, если встречает символ EOF (символ конца файла), определенный в файле stdio.h как -1.

Функция fputs() записывает строку (свой первый аргумент) в файл, указатель на который является вторым аргументом. Возвращает EOF, если встречается символ EOF, или возникает ошибка.

Мы рассмотрели восемь функций, предназначенных для ввода-вывода при работе с файлами. Существует еще одна функция, которая служит для изменения текущей позиции в файле.

Изменение текущей позиции в файле

Функция fseek() позволяет установить текущую позицию в файле в любое положение. Она имеет три аргумента: указатель на файл, аргумент типа long, указывающий, на сколько символов необходимо сместиться от начального положения (положительный, если смещение происходит вперед, и отрицательный, если назад), и,наконец, третий аргумент, определяющий начальное положение. Начальное положение определяется символическими константами, определенными в файле stdio.h:

Константа Значение Положение
SEEK_SET   Начало файла
SEEK_CUR   Текущая позиция
SEEK_END   Конец файла

Например, оператор

fseek(f,-10,SEEK_END)

делает текущей позицию, находящуюся за десять символов до конца, в файле, на который указывает первый аргумент.

Функция возвращает 0 при успешном выполнении и –1 при возникновении ошибки (например, при попытке передвинуться за границы файла).

Задание

Написать программу, реализующую обработку данных и файловый ввод-вывод соответственно варианту задания. Работа программы должна включать ввод пользователем с клавиатуры имен входного и выходного файлов. Результат работы программы сохраняется в выходном файле, а также выводится на экран. Во время работы программы пользователю должны выводиться на экран сообщения, поясняющие каждый этап работы программы.

Варианты заданий

1) Убрать из текста лишние пробелы, т.е. там, где они встречаются больше одного раза, оставить один пробел.

2) Подсчитать количество символов в заданном тексте.

3) Подсчитать количество слов и число предложений (предложения оканчиваются точкой, слова разделяются запятыми).

4) Определить, какая буква чаще всего встречается в заданном тексте.

5) Если строка начинается с цифры, то перед ней поставить левую круглую скобку, а в конец строки - правую круглую скобку.

6) Подсчитать число цифр в данном тексте и их сумму.

7) Перед каждым символом поставить порядковый номер в тексте.

8) Определить переменную "студент", содержащую следующие поля: имя, фамилия, отчество студента, название института, номер группы. Данные считать из текстового файла. Вывести данные о студентах, которые учатся в одном и том же институте, и в одной группе.

9) Определить, входит ли заданное слово в текст. Если да, то сколько раз.

10) Удвоить в тексте каждую литеру.

11) Напечатать в алфавитном порядке все буквы, входящие в текст.

12) Подсчитать сумму чисел, записанных в тексте.

13) В тексте записаны слова через пробел. Вывести их в алфавитном порядке.

14) Напечатать самое длинное слово, найденное в тексте.

15) Во всех словах заменить первую букву на последнюю, а последнюю на первую.

16) Удалить из текста все последующие вхождения первой буквы.

17) Оставить в слове только первые вхождения каждой буквы.

18) Заданное число, от 1 до 1999, напечатать римскими цифрами XLVI и т.д.

19) Определить, является ли текст правильной записью римскими цифрами целого числа от 1 до 1999. Если да, то напечатать это число арабскими цифрами.

20) Удалить из текста каждое N-е вхождение в него заданного символа.

21) Удалить из текста каждое N-е вхождение в него заданного слова.

22) Задан текст. Вывести этот текст, подчеркивая (ставя в следующей строке под этим символом минус) все входящие в него цифры.

23) Определить, равны ли два заданных файла.

24) Заменить заданное слово в тексте на другое слово.

25) Определить строку максимальной длины и вывести ее.

26) Подсчитать, сколько раз в тексте встречается заданное слово.

27) Выбросить из текста заданный знак, где бы он не встречался.

28) Удалить из текста каждое четное предложение.

29) Отформатировать текст следующим образом: каждое предложение должно иметь свой порядковый номер; начинаться с красной строки.

30) Подсчитать, сколько раз в тексте встречается заданный знак.

31) Удалить из текста все предложения, в которых запятые встречаются более 2-х раз.

32) В тексте перед каждым предложением, в котором встречается заданное слово, поставить восклицательный знак "!".


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: