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

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

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. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

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