PROGRAMMING
LANGUAGE ============================================= Second Edition BRIAN W. KERIGHAN DENNIS M. RITCHIE AT & T Bell Laboratories Murray Hill, New Jersey Prentice Hall PTR, Upper Saddle River, New Jersey 07458 _________________________________________________________ Файлу, из которого будет считываться информация, присвоим имя data3.txt, файлу, куда она будет записываться, – data33.txt. Программный код решения примера
В программе с помощью логического условия «или» (||) производится проверка корректности открытия файла data3.txt для чтения и файла data33.txt для записи. Вместо функции fopen() используется функция fopen_s(), которая применяется в MS Visual Studio. Функция fgets() считывает строки из файла, на который имеется указатель *fid, и записывает их в символьный массив str[256]. Одно поле этой функции используется для определения количества считываемых символов с учетом символа завершения строки. Первая функция fputs() нужна для вывода информации на консоль с помощью определения стандартного выходного потока stdout, который указывает на «обычное» средство вывода – дисплей. Вторая функция fputs() выводит символьный массив str[] в файл data33.txt с помощью файлового указателя *fid2. Вывод на дисплей и запись в файл будут осуществляться до тех пор, пока при чтении из файла data3.txt не обнаружится признак конца файла, т. е. NULL. Проверку можно выполнять также по числу считанных символов, а именно n – 1, т. е. в данном случае 255 символов из 256. Результат выполнения программы с выводом текстовой информации на консоль представлен на рис. 12.4.
Рис. 12.5. Результат записи текстовой информации в текстовый файл Задание 3 1. Подсчитайте число итераций, выполняемых функцией if(). 2. Вывод на консоль выполните с помощью функции printf(), а запись в файл – посредством функции fprintf(). 3. Напишите программу ввода строк с клавиатуры и записи введенной информации в текстовый файл с именем compX.txt, где Х – номер компьютера, на котором выполняется лабораторная работа. В качестве вводимой информации используйте название дисциплин, которые вы изучаете на данный момент, а также специальность на которой вы учитесь. 4. Напишите программу записи в текстовый файл compX.txt матрицы вещественных случайных чисел из интервала [–X; X]. Произведите считывание матрицы из файла с выводом ее значений на консоль и записью в другой текстовый файл. Размер матрицы примите n × m, где n = 3Х, m = 2X, где Х – номер компьютера, на котором выполняется лабораторная работа. 5. Напишите программу записи в текстовый файл символьного массива, состоящего из четырех строк и необходимого количества столбцов для записи строчных букв латинского алфавита (количество букв 26). Примечание. Для п. 5 задания 3 примените массив указателей для считывания строк разной длины. Пример 4. Написать программу форматированной записи в текстовый файл трех строк различной длины и одномерного целочисленного массива. Произвести чтение из текстового файла с выводом его содержания на консоль и преобразование одномерного массива в двухмерный. Для решения примера используем функции fprintf(), fgets(), atoi(), fscanf(). Программный код решения примера
Для форматированной записи в текстовый файл и чтения из файла применены массивы указателей *str[], str2[123][80]. Чтение из файла одномерного массива целых чисел выполняется с помощью функции atoi(), значения целых чисел заносятся сначала в одномерный массив B[n*m]. После закрытия файла data4.txt этот же массив выводится на консоль в виде двухмерной матрицы размера 4 × 3. Форматированная запись строк и одномерного массива в файл data4.txt производится с помощью функции fprintf(). Первое чтение информации из текстового файла осуществляется посредством функции fgets(), что позволяет практически точно копировать расположение строк текстового файла на консоль (дисплей). Функция fscanf() используется для форматированного чтения информации из текста с последующим выделением целых чисел с помощью функции atoi().
Рис. 12.6. Содержимое текстового файла и преобразованного массива Задание 4 1. Для вывода информации из текстового файла поочередно используйте функции fgets() и fscanf(). 2. Инициализацию массива А выполните как инициализацию двухмерной матрицы с возможными сочетаниями числа строк и столбцов. 3. В качестве строк разной длины используйте название факультета, свою фамилию, специальность и номер учебной группы, в которой Вы учитесь. 4. Массивы чисел определите как вещественные. 5. Размерность массива задайте с клавиатуры и заполните его натуральными числами по строкам. Предусмотрите проверку возможности преобразования одномерного массива в двухмерный. Если возможно преобразование одномерного массива, то выведете двухмерный массив в текстовый файл с именем compX.txt, где Х – номер компьютера, на котором выполняется лабораторная работа. Пример 5. Написать программу добавления слов в текстовый файл с контролем на консоли [9]. В текстовый файл запишем название книги и авторов [3]. Затем будем добавлять слова, символы и т. д. Для программного решения примера используем функции файлового ввода / вывода fprintf(), fgets() и rewind(). Кроме того, подключим библиотеку locale.h и объявим прототип функции, что позволит использовать шрифты русского алфавита: #include <locale.h> setlocale(LC_ALL, "Russian");// setlocale(LC_ALL, "rus"); или
|