Другие функции из библиотеки обработки строк — КиберПедия 

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Другие функции из библиотеки обработки строк

2020-05-08 277
Другие функции из библиотеки обработки строк 0.00 из 5.00 0 оценок
Заказать работу

Двумя последними функциями библиотеки обработки строк являются strerror и strlen. Эти функции приведены на рис. 36.

 

Прототип Описание функции
int strerror (int errornum) Устанавливает соответствие номера ошибки errornum полной текстовой строке (зависящей от системы). Возвращает указатель на строку.
int strlen (const char *s) Определяет длину строки s. Возвращает число символов, предшествующих ограничивающему символу NULL.

Рис. 36. Функции операций со строками из библиотеки обработки строк

 

Функция strerror получает номер ошибки и создает строку сообщения об ошибке. Функция возвращает указатель на эту строку. Программа, приведенная на рис. 37, демонстрирует работу strerror.

Функция strlen получает строку в качестве аргумента и возвращает число символов в строке (ограничивающий символ NULL в длину строки не включен). Программа, приведенная на рис. 38, демонстрирует работу strlen.

 

/* Применение strerror */

# include < stdio. h >

#include <string.h>

main () {

printf("%s\n", strerror (2));

return 0;

}

 

Вывод на экран

Error 2

Рис. 37. Применение strerror

 

/* Применение strlen */

#include <stdio.h>

#include <string.h>

main ()

{

char *stringl = "abcdefghijklmnopqrstuvwxyz";

char *string2 = "four";

char *string3 = "Boston";

printf("%s\"%s\"%s%lu\n%s\"%s\"%s%lu\n%s\"%s\"%s%lu\n",

"The length of ", stringl, " is ", strlen (stringl), "The length of ", string2, " is ", strlen (string2), "The length of ", string3, " is ", strlen(string3));

return 0; }

 

Вывод на экран

The length of "abcdefghijklmnopqrstuvwxyz" is 26 The length of "four" is 4 The length of "Boston" is 6

Рис. 38. Применение strlen

Порядок выполнения работы

1. Изучите теоретический материал.

2. Напишите программу, согласно заданному в варианте задания условию.

3. Ответьте на контрольные вопросы.

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

Вариант 1

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

Вариант 2

Напишите программу, которая вводит строки текста в массив символов s[100],используя функцию gets. Выведите строки в верхнем и нижнем регистрах.

Вариант 3

Напишите программу, которая вводит 4 строки, представляющие целые значения, преобразует строки в целые числа, суммирует и выводит сумму 4 значений.

Вариант 4

Напишите программу, которая вводит 4 строки, представляющие значения с плавающей точкой, преобразует строки, удваивая значения, суммирует и выводит сумму 4 значений.

Вариант 5

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

Вариант 6

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

Вариант 7


(Лимерики) Лимерик — юмористическое стихотворение из пяти строк, в котором первая и вторая строки рифмуются с пятой, а третья рифмуется с четвертой. Напишите программу, которая производит случайные стихотворения.

Вариант 8

Напишите программу, которая вводит телефонный номер как строку в формате (555) 555-5555. Программа должна использовать функцию strtok, чтобы извлекать в качестве лексем код региона, первые три цифры номера телефона и последние четыре цифры номера телефона. Семь цифр номера телефона должны объединяться в одну строку операцией конкатенации. Программа должна преобразовать строку кода региона в тип int, а строку номера телефона в тип long. И код региона и номер должны быть выведены на печать.

Вариант 8

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

Напишите программу, которая считывает с клавиатуры строку текста и строку поиска. Вызвав функцию strstr, найдите местоположение первого вхождения строки поиска в строку текста и присвойте ее местоположение переменной searchPtr типа char *. Если строка поиска найдена, выведите остаток строки текста, начинающийся состроки поиска. Затем снова вызовите strstr, чтобы найти следующее вхождение строки поиска в строку текста. Если второе вхождение найдено, выведите остаток строки текста, начинающийся со второго вхождения строки поиска. Подсказка: второе обращение к strstr должно содержать в качестве первого аргумента значение searchPtr+1.

Вариант 8


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

Вариант 9

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

Вариант 10

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

Вариант 11

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

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

Вариант 12

Напишите программу, которая вводит ряд строк и выводит те из них, которые начинаются с буквы «b».

Вариант 13

Напишите программу, которая вводит ряд строк и выводит те из них, которые заканчиваются на «ED».

Вариант 14

Напишите программу, которая вводит код ASCII и выводит соответствующий символ. Измените эту программу так, чтобы она генерировала все возможные коды с тремя цифрами в диапазоне от 000 до 255 и попыталась вывести соответствующие символы. Что происходит при выполнении этой программы?

Вариант 15

Напишите ваши собственные версии функций getchar, gets, putchar и puts.

Форма отчёта: отчет выполняется в текстовом редакторе в электронном виде.

Содержание отчета:

1. Тема работы.

2. Цель работы.

3. Текст отлаженной программы с комментариями


Контрольные вопросы

 

1. Предположим, что переменная с (содержащая символ), х, у, и z являются переменными типа int, переменные d, е, и f являются переменными с плавающей точкой, переменная ptr имеет тип char * и массивы s1 [100] и s2 [100] являются массивами типа char. Напишите по одному оператору, чтобы выполнить каждое из следующих заданий:

   a. Преобразуйте символ, хранящийся в переменной с, в букву верхнего регистра. Присвойте результат переменной с.

б. Определите, является ли значение переменной с цифрой. Используйте условную операцию, чтобы при выводе результата печатались фразы «is а» или «is not a».

в.Преобразуйте строку «1234567» в тип long и выведите полученное значение.

г. Определите, является ли значение переменной с управляющим символом. Используйте условную операцию, чтобы при выводе результата печатались фразы «is а» или «is not a».

д. Введите с клавиатуры строку текста в массив s1 не используя функцию scanf.

е. Выведите строку текста, хранящуюся в массиве s1, не используя printf.

ж. Присвойте ptr местоположение последнего вхождения символа с в s1.

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

и. Преобразуйте строку «8.63582» в тип double и выведите полученное значение.

к. Определите, является ли значение с буквой. Используйте условную операцию, чтобы при выводе результата печатались фразы «is а» или «is not a».

л. Введите с клавиатуры символ и сохраните его в переменной с.

м. Присвойте ptr местоположение первого вхождения s2 в s1.

н. Определите, является ли значение переменной с печатаемым символом. Используйте условную операцию, чтобы при выводе результата печатались фразы «is а» или «is not a».

о. Введите три значения типа float в переменные d, е, и f из строки «1.27 10.39.432».

п. Скопируйте строку, хранящуюся в массиве s2, в массив s1.

р. Присвойте ptr местоположение первого вхождения в s1 любого символа из s2.

с. Сравните строку в s1 со строкой в s2. Выведите результат.

т. Присвойте ptr местоположение первого вхождения с в s1.

у. Используйте sprintf для вывода значений целых переменных х, у, и z в массив s1. Каждое значение должно быть напечатано с шириной поля, равной 7.

ф. Выполните конкатенацию 10 символов строки в s2 со строкой в s1.

х. Определите длину строки в si и выведите результат.

ц. Преобразуйте строку «-21» в тип int и выведите полученное значение.

ч. Присвойте ptr местоположение первой лексемы в s2. Лексемы в s2xx отделены запятыми (,).

ш. Покажите два различных метода инициализации массива символов vowel строкой гласных «AEIOU».

щ. Что выводится (если вообще выводится) при выполнении каждого из следующих операторов С? Если оператор содержит ошибку, охарактеризуйте ее и укажите, как ее исправить. Предположим, что объявлены следующие переменные:

char s1[50] = "jack", s2[50] = "jill", s3[50], *sptr;

printf("%c%s", toupper (s1[0]), &s1[1]);

printf ("%s", strcpy(s3, s2));

printf("%s", strcat (strcat(strcpy(s3, s1), " and "), s2));

printf ("%u", strlen(s1) + strlen(s2));

printf ("%u", strlen(s3));

2. Найдите ошибку в каждом из следующих операторов программы и
объясните, как их исправить:

char s[10]; strncpy(s, "hello", 5); printf("%s\n", s);

printf ("%s", 'a');

char s[12];

strcpy (s, "Welcome Home");

d) if (strcmp(stringl, string2))

printf("The strings are egual\n");Что такое триггер? Какую функцию он выполняет?

Список использованной литературы

 

1. Х.Дейтел Как программировать на C; Пер. с англ. под ред. В. Тимофеева. - М.: БИНОМ, 2000. - 1005 с.: ил.; 24

2. Язык программирования С / Брайан Керниган, Деннис Ритчи; [пер. с англ. и ред. В. Л. Бродового]. - 2-е изд., перераб. и доп. - Москва [и др.]: Вильямс, 2007. - 289 с.; 23 см.

3. Бьерн Страуструп Язык программирования C++; Пер. с англ. С. Анисимова и М. Кононова под ред. Ф. Андреева, А. Ушакова. - 3. изд. - М.: Binom Pablishers; СПб.: Нев. диалект, 2004. - 990 с.: ил.; 24 см.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 6


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

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

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.033 с.