Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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.

Программный код решения примера

#include <stdio.h> #include <conio.h> int main(void) { char str[255+1]; char data3[] = "D:\\data3.txt"; char data33[] = "D:\\data33.txt"; FILE *fid, *fid2; errno_t err; if ((fopen_s(&fid, "D:\\data3.txt", "r")) || (err = fopen_s(&fid2, "D:\\data33.txt", "w"))!= 0) { printf("\n\t The file could not be opened.\n "); printf("\n Press any key: "); getch(); return -1; } if (fgets(str, 255, fid)!= NULL) // чтение из data3.txt { fputs(str, stdout); // вывод на консоль fputs(str, fid2); // запись в файл data33.txt } fclose(fid); fclose(fid2); printf(" Read the information was produced from a file %c\n", data3); printf(" Recorded information has been made to the file %c\n", data33); printf("\n Press any key: "); getch(); return 0; }

В программе с помощью логического условия «или» (||) производится проверка корректности открытия файла 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.4. Консольный вывод содержимого текстового файла


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

Рис. 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().

Программный код решения примера

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #define n 4 // число строк матрицы #define m 3 // число столбцов матрицы #define N 123 // число считываемых строк из текстового файла int main(void) { int i, j = 0; int A[n*m] = {1,2,3,4,5,6,7,8,9,10,11,12}; int B[n*m]; FILE *fid; char**str[] = {"aza","baza","qwerty"}; char str2[N][80]; // буферный массив // Обнуление массива B[n*m] for (i = 0; i < n*m; ++i) B[i] = 0; if ((fid = fopen("D:\\data4.txt", "w")) == NULL) {printf("\n\t The file could not be opened.\n "); printf("\n Press any key: "); getch(); return -1; } // Запись в файл data4.txt fprintf(fid, "\n\t The lines are:\n"); for (i = 0; i < m; ++i) fprintf(fid,"\t %c\n", str[i]); for (i = 0; i < n*m; ++i) fprintf(fid, " %3d", A[i]); fclose(fid); printf("\n\t From file \"data4.txt\":\n"); if ((fid = fopen("D:\\data4.txt", "r")) == NULL) {printf("\n\t The file could not be opened.\n "); printf("\n Press any key: "); getch(); return -1; } // Чтение из файла data4.txt for (i = 0; (fgets(str2[i], 80, fid)!= NULL) && (i < N); ++i) printf(" %c",str2[i]); fclose(fid); if ((fid = fopen("D:\\data4.txt", "r")) == NULL) {printf("\n\t Error! You can not open the file \n "); printf("\n Press any key: "); getch(); return -1; } // Повторное чтение из файла data4.txt for (i = 0; fscanf (fid, "%c", str2[i])!= EOF; ++i) if (atoi(str2[i])) { B[j] = atoi(str2[i]); ++j; } fclose(fid); printf("\n\n\t The reconfigured array:\n"); for (i = 0; i < n; ++i) { printf("\n\t"); for (j = 0; j < m; ++j) printf("%5d", B[i*m+j]); } printf("\n\n Press any key: "); getch(); return 0; }

Для форматированной записи в текстовый файл и чтения из файла применены массивы указателей *str[], str2[123][80]. Чтение из файла одномерного массива целых чисел выполняется с помощью функции atoi(), значения целых чисел заносятся сначала в одномерный массив B[n*m]. После закрытия файла data4.txt этот же массив выводится на консоль в виде двухмерной матрицы размера 4 × 3. Форматированная запись строк и одномерного массива в файл data4.txt производится с помощью функции fprintf(). Первое чтение информации из текстового файла осуществляется посредством функции fgets(), что позволяет практически точно копировать расположение строк текстового файла на консоль (дисплей). Функция fscanf() используется для форматированного чтения информации из текста с последующим выделением целых чисел с помощью функции atoi().


Возможный результат выполнения программы представлен на рис. 12.6.

Рис. 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");

или







Дата добавления: 2015-09-06; просмотров: 452. Нарушение авторских прав; Мы поможем в написании вашей работы!




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

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

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

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Studopedia.info - Студопедия - 2014-2026 год . (0.01 сек.) русская версия | украинская версия