Скачать презентацию ФАЙЛЫ И СИМВОЛЫ Файлы Файл это Скачать презентацию ФАЙЛЫ И СИМВОЛЫ Файлы Файл это

Lekcija_faily.simvoly.stroki.ppt

  • Количество слайдов: 36

ФАЙЛЫ И СИМВОЛЫ ФАЙЛЫ И СИМВОЛЫ

Файлы Файл – это именованная область памяти на внешнем запоминающем устройстве. Файлы служат для Файлы Файл – это именованная область памяти на внешнем запоминающем устройстве. Файлы служат для записи и хранения информации. Полное имя файла для С имеет следующий формат: <имя>. <тип>. Тип в имени может отсутствовать. Число символов в типе не превышает трех. Для того чтобы в языке С во время работы программы организовать ее взаимодействие с файлом на внешнем запоминающем устройстве, надо: – объявить переменную, которая называется указателем файла; – открыть файл (связать указатель файла с конкретным именем файла); – закрыть файл, если программа завершила все операции с файлом на внешнем носителе. Язык программирования С. Файлы и символы 2

Файлы (продолжение) Формат объявления переменной, которая является указателем файла, следующий: FILE *<имя>; Для связи Файлы (продолжение) Формат объявления переменной, которая является указателем файла, следующий: FILE *<имя>; Для связи файла на носителе с указателем в программе используется функция fopen(). Код, который открывает файл, имеет следующий вид: FILE *f 1; f 1 = fopen(“<имя файла на носителе>”, ”<режим доступа к файлу>”); Здесь: <имя файла на носителе> – имя конкретного файла на внешнем носителе; <режим доступа к файлу> задает режим доступа к файлу. Возможные режимы доступа: r – файл открыт для чтения; w–файл открыт для записи; a – файл открыт для дозаписи в конец; r+ – файл открыт для чтения и записи; w+ – файл открыт для записи и чтения. Функция fopen() возвращает указатель файла. Если при открытии файла произошла ошибка, то функция возвращает NULL. Для подтверждения того, что функция fopen() выполнилась успешно, можно использовать следующий набор операторов: Язык программирования С. Файлы и символы 3

Файлы (продолжение) FILE *f 1; if ((f 1 = fopen( “t. txt”, “r”)) != Файлы (продолжение) FILE *f 1; if ((f 1 = fopen( “t. txt”, “r”)) != NULL) { // Если файл открыт, то выполняется блок операторов в скобках. } else // Если файл не открыт, то выдается сообщение об ошибке. printf(“Ошибка при открытии файла!!! n”); Здесь t. txt есть файл с информацией, который записан на внешнем носителе. Закрывает доступ к файлу функция fclose(f 1), где f 1 – указатель на открытый ранее файл. Для ввода информации из файла в память компьютера используется директива форматного ввода fscanf(). Формат директивы для считывания информации из файла имеет следующий вид: fscanf( F, <управляющая строка>, <список переменных>). Для записи информации из памяти компьютера в файл используется директива форматного ввода fprintf(). Формат директивы для записи информации в файл имеет следующий вид: fprintf( F, <управляющая строка>, <список переменных>). Язык программирования С. Файлы и символы 4

Программа вводит целое число из файла и записывает число в новый файл. void main(void) Программа вводит целое число из файла и записывает число в новый файл. void main(void) { FILE *f 1; // Объявляет файловую переменную. int n; /* Ввод из файла */ if( (f 1 = fopen("num. txt", "r")) != NULL) { fscanf( f 1, "%d", &n); printf("n= %d", n); fclose(f 1); // Запись числа в файл. n = n * n; f 1 = fopen("t 1_w. txt", "w"); fprintf( f 1, "%d ", n ); fclose(f 1); } else printf(" Файл не открыт. n"); getch(); } Язык программирования С. Файлы и символы 5

П р о г р а м м а FL 2. Ввод массива в П р о г р а м м а FL 2. Ввод массива в память компьютера из файла при заданном количестве чисел. void main() { const n = 10; FILE *f 1; int i, a[n]; // n – для числа элементов в массиве. // Определяется файловая переменная f 1 = fopen("t 1. txt", "r"); for (i = 0; i <= n - 1; i++) fscanf( f 1, "%d", &a[i] ); fclose(f 1); f 1 = fopen("t 1_w. txt", "w"); for (i = 0; i <= n - 1; i++) fprintf( f 1, "%d ", a[i] ); // fprintf – директива записи данных в файл. fclose(f 1); } Язык программирования С. Файлы и символы 6

Программа. Ввод массива по признаку конца файла. void main(void) { const n = 100; Программа. Ввод массива по признаку конца файла. void main(void) { const n = 100; // Определяется число элементов в массиве. FILE *f 1; // Определяется файловая переменная. int i = -1, a[n], nr; f 1 = fopen("t 1. txt", "r"); do { i++; // !!! Формируем индекс элемента файла. fscanf( f 1, "%d", &a[i] ); } while (!feof(f 1 )); // Ввод чисел до признака конца файла. fclose(f 1); // Запись элементов массива в файл. nr = i; // В nr засылаем число элементов в массиве. f 1 = fopen("t 1 w. txt", "w"); for (i = 0; i <= nr; i++) fprintf(f 1, "%d ", a[i] ); // fprintf – директива записи данных в файл. fclose(f 1); } Такой способ ввода информации удобен, когда заранее не известно число элементов в массиве. Язык программирования С. Файлы и символы 7

Символы Для объявления символьных переменных в языке С используется ключевое слово char. Этот тип Символы Для объявления символьных переменных в языке С используется ключевое слово char. Этот тип переменных выделяет 1 байт для записи символов и определяет целые числа без знака в диапазоне от 0 до 255. Для идентификации символов используется код ASCII. Это означает, что каждому символу строго соответствует некоторое число. Формат объявления символьных переменных имеет следующий вид: char <имя>. При объявлении символьной переменной ее можно инициализировать. Например, код char c 1 = ‘*’ выделяет область памяти с именем c 1 и засылает в нее символ *. Символ в одинарных кавычках называется символьной константой. Для ввода символа с клавиатуры можно использовать следующие функции: getchar() – возвращает символ, введенный с клавиатуры после активизации клавиши Enter; Язык программирования С. Файлы и символы 8

getch() – возвращает символ, введенный с клавиатуры. Введенный символ на экран не отображается; getche() getch() – возвращает символ, введенный с клавиатуры. Введенный символ на экран не отображается; getche() – возвращает символ, введенный с клавиатуры. Введенный символ отображается на экране; cin – бесформатный ввод символа. Для ввода символа в переменную надо нажать последовательно соответствующую клавишу символа, а затем клавишу Enter; scanf() – форматный ввод символа. Для ввода символа в переменную надо нажать соответствующую клавишу символа, а затем клавишу Enter. Спецификация формата ввода (вывода) символов имеет вид %c. Возможен, например, следующий формат кода с функцией scanf(): scanf(%c%c%c”, &w, &al, &yy), здесь w, a 1, yy – переменные символьного типа. Эта директива обеспечивает ввод символов в переменные w, a 1, yy. Для ввода символов по этой директиве надо на клавиатуре набрать через пробелы три символа и нажать клавишу Enter. В языке С возможен код int n; n = ‘q’; В этом случае в переменную n засылается число 113, которое является кодом символа q. Язык программирования С. Файлы и символы 9

Программа. Для ввода символа с клавиатуры используются различные функции. void main() { char z Программа. Для ввода символа с клавиатуры используются различные функции. void main() { char z = 'w'; cout << "При объявлении переменной z ей присвоено значение = " << z << "nn"; cout << "Введи символ с клавиатуры” << “ (После набора символа нажми ENTER): "; scanf("%c", &z); cout << "При вводе в переменную z символа " << z << "n использовалась функция scanf() nn"; cout << "Введи символ с клавиатуры” << “ (После набора символа нажми ENTER): "; cin >> z; cout << "При вводе в переменную z символа " << z << "n использовалась функция cin nn"; cout << "Введи символ с клавиатуры n " << "(ввод происходит при нажатии клавиши клавиатуры): "; z = getche(); Язык программирования С. Файлы и символы 10

cout << cout << "n. При вводе в переменную z символа " << z << "n использовалась функция getche() nn"; cout << "Введи символ с клавиатуры n" << "(ввод происходит при нажатии клавиши клавиатуры): "; z = getch(); cout << "n. При вводе в переменную z символа " << z << "n использовалась функция getch() nn"; z = 23; // В переменную z заносится символ, код которого равен 23. cout << "В переменную z введен символ директивой z = " << (int) z << "n"; cout << "Коду (числу) " << (int) z << " соответствует символ " << z << "nn"; getch(); } Язык программирования С. Файлы и символы 11

Продемонстрируем трассировку работы программы. При объявлении переменной z ей присвоено значение = w Введи Продемонстрируем трассировку работы программы. При объявлении переменной z ей присвоено значение = w Введи символ с клавиатуры. После набора символа s нажми ENTER. При вводе в переменную z символа s использовалась функция scanf(). Введи символ с клавиатуры. После набора символа r нажми ENTER. При вводе в переменную z символа r использовалась функция cin. Введи символ t с клавиатуры (ввод происходит при нажатии клавиши клавиатуры). При вводе в переменную z символа t использовалась функция getche() Введи символ g с клавиатуры (ввод происходит при нажатии клавиши клавиатуры). При вводе в переменную z символа g использовалась функция getch(). В переменную z введен символ директивой z = 23. Язык программирования С. Файлы и символы 12

Для вывода символов можно использовать либо форматный вывод printf(), либо бесформатный cout, либо функцию Для вывода символов можно использовать либо форматный вывод printf(), либо бесформатный cout, либо функцию putchar(). Формат директив при выводе символов на экран может быть, например, таким: – putchar(c); – cout << “В переменной w содержится символ = “ << w << “n”; – printf “В переменную z введен символ %cn”, z; – cout << “В переменную t введен символ “ << putchar(t). Здесь c, w, z, t – переменные символьного типа. Все эти директивы выведут на экран символы, которые находятся в c, w, z, t. Язык программирования С. Файлы и символы 13

Программа выводит ASCII код символа. void main() { char ch; cout << Программа выводит ASCII код символа. void main() { char ch; cout << " Введи символ ( Enter – выход из программы )n "; do { ch = getch(); // Ввод символа с клавиатуры. if (ch != 13) // 13 – код символа Enter. cout << "Cимволу " << ch // Вывод символа на экран. << " cоответствует код " << (int) ch // Вывод кода символа. << "n"; else cout << "Cимволу Enter " << " cоответствует код " << (int) ch << "n"; } while (ch != 13); // Продолжать ввод, пока не введен символ Enter. cout << "n. Для выхода из программы нажми любую клавишу. n "; getch(); } При работе программы запрашивается ввод символа. После ввода символа, например, q на экран выводится сообщение: Символу q соответствует код 113. Работа программы будет продолжаться до тех пор, пока не будет нажата клавиша Enter. Язык программирования С. Файлы и символы 14

Программа посимвольно считывает текст из файла и выводит этот текст на экран. void main() Программа посимвольно считывает текст из файла и выводит этот текст на экран. void main() { FILE *f 1; char c 1; cout << "Программа выводит текст, “ << “который вводится из файла посимвольно. n"; f 1= fopen("str. txt", "r"); // Открываем файл с текстом. do {c 1 = getc(f 1); // В переменную c 1 из файла вводим символ. printf("%c", c 1); // Выводим символ на экран. } while (!feof(f 1 )); // Цикл, пока не конец файла. fclose(f 1); getch(); } Язык программирования С. Файлы и символы 15

Программа выводит на экран символы английского алфавита. void main() { char ch; cout << Программа выводит на экран символы английского алфавита. void main() { char ch; cout << "Символы английского алфавита: n"; for (ch = 'a'; ch <= 'z'; ch++) // Цикл от a до z. cout << ch << " "; // Вывод управляющего параметра цикла на экран. cout << "n"; getch(); }. Результат работы программы – символы английского алфавита: a b c d e f g h i j k l m n o p q r s t u v w x y z Язык программирования С. Файлы и символы 16

Программа выводит на экран символы русского алфавита. void main() {char ch; cout << Программа выводит на экран символы русского алфавита. void main() {char ch; cout << "Символы русского алфавита: n"; for ( ch = 'а'; ch <= 'я'; ch++ ) if( ! (ch > 'п' && ch < 'р')) cout << ch << " "; cout << "n"; getch(); }. Результат работы программы символы русского алфавита: абвгдежзи й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я Замечание. Условный оператор if(!(ch > 'п' && ch < 'р')) в программе используется потому, что между русскими буквами ‘п’ (код 175) и ‘р’ (код 224), находятся символы, которые не являются буквами русского алфавита. Коды упомянутых символов начинаются от значения 176 и заканчиваются значением 223. Оператор if(!(ch > 'п' && ch < 'р')) исключает вывод этих символов на экран. Язык программирования С. Файлы и символы 17

Стандартные программы, которые используются в языке С для анализа символов. Стандартные программы находятся в Стандартные программы, которые используются в языке С для анализа символов. Стандартные программы находятся в файле : isalnum(int c) – функция возвращает не нуль, если c – код буквы или цифры, и нуль – в противном случае; isalpha(int c) – функция возвращает не нуль, если c – код буквы, и нуль – в противном случае; isascii(int c) – функция возвращает не нуль, если c есть код ASCII, т. е. код принимает значение от 0 до 127; isdigit(int c) – функция возвращает не нуль, если c – цифра (0– 9), и нуль – в противном случае; ispunct(int c) – функция возвращает не нуль, если c – символ-разделитель, и нуль – в противном случае. Язык программирования С. Файлы и символы 18

СТРОКИ И МАССИВЫ СТРОК СТРОКИ И МАССИВЫ СТРОК

Строки Используя символьные переменные, можно сформировать две структуры данных: массив символов и строки. Массив Строки Используя символьные переменные, можно сформировать две структуры данных: массив символов и строки. Массив есть множество элементов одного типа. Строка – это массив символов, последним элементом которого является символ ‘’ (обратный слеш, 0), называемый концом строки. Принципиальная же разница между строкой и массивом состоит в том, что присутствие в строке символа ‘’ неявно задает размер массива. Форма объявления массива символов в языке С имеет следующий вид: char <имя>[<размер>]. Специального формата для объявления строки в языке С не существует. Но строку можно определить, инициализируя значения массива символов строковой константой. Строковая константа – это набор символов в двойных кавычках. Возможны следующие варианты инициализации: char s[]=“Саша – очень умный мальчик! ”; char s 2[10] = “Ура!!!”; char *s 3 = “Три мудреца в одном тазу. ”; char s 4[20] = “ “; Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 20

Для ввода строк с клавиатуры можно использовать функции: scanf() – функция форматного ввода строки; Для ввода строк с клавиатуры можно использовать функции: scanf() – функция форматного ввода строки; gets()– функция бесформатного ввода строки; cin – директива бесформатного ввода строки. Программа вводит строки с клавиатуры с использованием функции scanf(). Функция вводит текст до первого пробела. void main() { char a[80]; cout << "Введи строку (Ctrl + z Enter – конец ввода )n"; do { scanf("%s", a); if (!feof(stdin)) cout << "!!!! " << a << "n"; } while (!feof(stdin)); } Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 21

Последовательность работы программы при вводе одной строки: • запустить программу. После подсказки: Введи строку Последовательность работы программы при вводе одной строки: • запустить программу. После подсказки: Введи строку (Ctrl + z Enter – конец ввода ); • набрать строку: Наша Таня громко плачет; • нажать Enter; • На экране появится следующая информация: !!!! Наша !!!! Таня !!!! громко !!!! Плачет. Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 22

Программа вводит строки с клавиатуры, используя функцию gets(). void main() { char a[80]; cout Программа вводит строки с клавиатуры, используя функцию gets(). void main() { char a[80]; cout << "Введи строку (Ctrl + z Enter – конец ввода)n"; while (!feof(stdin)) { gets(a); cout << "!!!! " << a << "n"; }} Последовательность работы программы при вводе одной строки: запустить программу. После подсказки: Введи строку (Ctrl + z Enter – конец ввода); • набрать строку: Наша Таня громко плачет; • нажать Enter. На экране выдачи результатов появится следующая информация: !!!! Наша Таня громко плачет Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 23

Программа вводит строки с клавиатуры, используя директиву cin. void main() { char a[80]; cout Программа вводит строки с клавиатуры, используя директиву cin. void main() { char a[80]; cout << "Введи строку n"; do { cin >> a; cout << "!!!! " << a << "n"; cout << "Продолжать ввод? (Enter – да)n"; } while (getch() == 13); } Последовательность работы программы при вводе одной строки: • запустить программу. После подсказки: Введи строку; • набрать строку: Наша Таня громко плачет; • нажать Enter; Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 24

На экране выдачи результатов появятся слова: !!!! Наша Продолжать ввод? (Enter – да) При На экране выдачи результатов появятся слова: !!!! Наша Продолжать ввод? (Enter – да) При нажатии Enter на экране появятся слова: !!!! Таня Продолжать ввод? (Enter – да) При нажатии Enter на экране появятся слова: !!!! громко Продолжать ввод? (Enter – да) При нажатии Enter на экране появятся слова: !!!! плачет Продолжать ввод? (Enter – да) После вывода последнего слова строки можно продолжать вводить строки. Если в процессе работы программы после подсказки: Продолжать ввод? (Enter – да) будет нажата не клавиша Enter, а любая другая, то программа завершит работу. Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 25

Для ввода строк из файла используются функции: fscanf() – функция форматного ввода текста из Для ввода строк из файла используются функции: fscanf() – функция форматного ввода текста из файла; fgets() – функция бесформатного ввода текста из файла. Формат кодов при использовании этих функций имеет следующий вид: fscanf(f 1, ”%s”, str); fgets(str, k, f 1). Здесь f 1 – имя файловой переменной; str – имя массива символов; “%s” – управляющая строка для функции fscanf(); k – параметр целого типа (fgets вводит в str всю строку, если число символов в строке меньше или равно k – 1). При успешном завершении работы функции fgets() в str засылается строка из файла f 1. При выполнении функции fscanf() в str последовательно засылается из файла набор символов, расположенных между пробелами. Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 26

Программа вводит текст из файла, используя функцию fscanf(). Наборы символов между пробелами последовательно засылаются Программа вводит текст из файла, используя функцию fscanf(). Наборы символов между пробелами последовательно засылаются в s 1. void main(void) { FILE *f 1; char s 1[81]; f 1 = fopen("t. txt", "r"); do { fscanf(f 1, "%s", s 1); printf("%s n", s 1); // Объявляется файловая переменная f 1. // Объявляется массив символов. // Открываем файл t. txt. // Ввод из файла t. txtв s 1 набор символов // между пробелами. // Вывод на экран информации из s 1. } while (!feof(f 1 )); // Вводить информацию из файла до конца файла. fclose(f 1); getch(); }. Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 27

Программа вводит текст из файла, используя функцию fgets(). void main(void) { FILE *f 1; Программа вводит текст из файла, используя функцию fgets(). void main(void) { FILE *f 1; // Объявляется файловая переменная f 1. char s 1[81]; // Объявляется массив символов. f 1 = fopen("t. txt", "r"); // Открываем файл t. txt. do { fgets(s 1, k, f 1); // Ввод строки в s 1 из файла t. dat. printf("%s n", s 1); // Вывод на экран информации из s 1. } while (!feof(f 1 )); // Вводить информацию из файла до конца файла. fclose(f 1); getch(); }. Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 28

Под строки можно выделять динамическую память. Так, в результате выполнения фрагмента программы: char *str; Под строки можно выделять динамическую память. Так, в результате выполнения фрагмента программы: char *str; // Объявляется указатель. int k; // Параметр k – для размера массива. cout << “Введи размер для строки: ”; cin >> k; str = new char [k]; под строку выделяется массив для символов размерностью k. В заключение перечислим некоторые стандартные функции для строк, которые можно использовать в языке С. Функции содержатся в файле : strlen(st) возвращает длину строки st; strchr(st, ch) возвращает значение указателя на первое вхождение символа в строке st, который совпадает с символом в переменной ch. Если символ не найден, функция strchr возвращает нулевой указатель. Иначе, функция strchr определяет, содержится ли тот или иной символ в строке; strcpy(st 1, st 2) копирует строку st 2 в строку st 1; strcat(st 1, st 2) присоединяет строку st 2 к строке st 1; Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 29

strstr(st 1, st 2) определяет, содержится ли строка st 2 в строке st 1. strstr(st 1, st 2) определяет, содержится ли строка st 2 в строке st 1. Если содержится, то strstr возвращает значение указателя на первое вхождение st 2 в st 1. Иначе strstr возвращает нулевой указатель. Strcmp(st 1, st 2) сравнивает в алфавитном порядке строки st 1 и st 2: при st 1 < st 2 значение сравнения отрицательно; при st 1 = st 2 значение сравнения равно нулю; при st 1 > st 2 значение сравнения положительно; atof(st) преобразует строку st в вещественное число типа double; atoi(st) преобразует строку st в десятичное целое число; atol(st) преобразует строку st в длинное десятичное целое число; itoa(int k, char *st, int baz) преобразует целое число k в строку st, переменная baz – основание (2 baz 36); ltoa(int k, char *st, int baz) преобразует длинное целое число k в строку st, переменная baz – основание (2 baz 36). Замечание. Функцию strcmp можно использовать для сортировки слов по алфавиту. Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 30

Массивы строк Массив строк – это двумерный символьный массив. Например, код char str[10][81]; задает Массивы строк Массив строк – это двумерный символьный массив. Например, код char str[10][81]; задает 10 строк по 80 символов каждая. Наиболее удобной формой выделения памяти под массив строк является выделение динамической памяти. Для этого, в простейшем случае, в программе следует предварительно объявить массив указателей типа char. Размер массива указателей может превышать или соответствовать количеству ожидаемых строк. Программа вводит с клавиатуры массив строк. Память под строки выделяется в процессе работы программы, т. е. динамически. Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 31

const n = 20; void main() { char *st[n]; // Объявляется массив указателей. int const n = 20; void main() { char *st[n]; // Объявляется массив указателей. int k = -1, i; printf("Введи строки (для окончания ввода нажми Ctrl + z Enter). n"); do { k++; // Формируем индекс для ввода очередной строки. st[k] = new char[81]; // Выделяем память для ввода строки. } while (gets(st[k]) != NULL); // Ввод и проверка // завершения ввода строки. printf("nn. Введены %d строки: n", k); for (i = 0; i < k; i++) printf("%sn", st[i]); // Вывод массива строк. getch(); } Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 32

Программа вводит из файла массив строк. void main() { FILE *f 1; char *st[20]; Программа вводит из файла массив строк. void main() { FILE *f 1; char *st[20]; // Определяется массив указателей. int k = -1, i; f 1 = fopen("t. txt", "r"); // Открывается файл с информацией. do { k++; // Формируем индекс для текущей строки. st[k] = new char[81]; fgets(st[k], 79, f 1); } while (!feof(f 1)); printf("n Из файла ввели %d строки: n", k); for (i = 0; i < k; i++) printf("%s", st[i]); getch(); } Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 33

Программа вводит из файла массив строк. void main() { FILE *f 1; char **st; Программа вводит из файла массив строк. void main() { FILE *f 1; char **st; int n, len, k = -1, i; cout << "Введи количество строк "; cin >> n; st = new char *[n]; // Выделяется память под массив указателей. cout << "Введи число символов в строке "; cin >> len; // Определяется число символов в строке. f 1 = fopen("t. txt", "r"); do { k++; st[k] = new char[len]; fgets(st[k], 79, f 1); // Вводим в строку st[k] информацию из файла. } while (!feof(f 1)); printf("n Из файла ввели %d строки: n", k); for (i = 0; i < k; i++) printf("%s", st[i]); // Вывод массива строк на экран. getch(); } Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 34

Массив строк можно задавать при объявлении переменных. Это, например, достигается следующим кодом: char *str[] Массив строк можно задавать при объявлении переменных. Это, например, достигается следующим кодом: char *str[] = {“Воскресенье”, “Понедельник”, “Вторник”, “Среда”, “Четверг”, “Пятница”, “Суббота”}; void main() { char *st[100], sr[81]; int k = -1, i, j, im; FILE *f 1; sr[80]= ''; f 1 = fopen("t. txt", "r"); do { k++; st[k] = new char[81]; // Выделяется память под строку. fgets(st[k], 79, f 1); // Ввод строки из файла. } while (!feof(f 1)); cout << " До сортировки: n"; for (i = 0; i < k; i++) printf("%s", st[i]); getch(); clrscr(); Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 35

// Сортировка по алфавиту. for (i = 0; i <= k; i++) { im // Сортировка по алфавиту. for (i = 0; i <= k; i++) { im = i; for (j = i+1; j < k; j++) if (strcmp( st[im], st[j]) > 0) im = j; strcpy(sr, st[i]); // Перестановка строк. strcpy(st[i], st[im]); strcpy(st[im], sr); } cout << "n После сортировки: n"; for (i = 0; i < k; i++) printf("%s", st[i]); getch(); } Язык программирования С. Строки и массивы строк. Доступ к функциональным клавишам 36