|
Программирование >> Структурное программирование
Использование memmove iinclude <iostream.h> tinclude <string.h> main 0 { char x[ ] = Home Sweet Home ; cout << Строка в массиве x до применения memmove: X endl; cout << Строка в массиве х после применения memmove: (char *) memmove(x, &х[5], 10) endl; return 0; Строка в массиве х до применения memmove: Home Sweet Home Строка в массиве х после применения memmove: Sweet Home Home Рис. 16.36. Использование функции memmove Использование memcmp tinclude <iostream.h> tinclude <iomanip.h> tinclude <string.h> main char sl[ ] = ABCDEFG , s2[ ] = ABCDXYZ ; cout si = si \ns2 = s2 endl \nmemcmp(si, s2, 4) = setw(3) \nmemcmp(si, s2, 7) = setw(3) << \nmemcmp(s2, si, 4) = << setw(3) endl; return 0; << memcmp(si, s2, 4) memcmp(si, s2, 7) << memcmp(s2, si, 4) si = ABCDEFG s2 = ABCDXYZ memcmp(si, s2, 4) = 0 memcmp(si, s2, 7) = -19 memcmp(s2, si, 4) = 0 Рис. 16.37. Использование функции memcmp Функция memchr определяет первое вхождение байта, представленного как unsigned char, в указанное число байтов объекта. Если указанный байт найден, возвращается указатель на этот байт объекта; в противном случае возвращается указатель NULL. Программа на рис. 16.38 ищет символ (байт) р в строке Это строка . 16.13. Другие функции библиотеки обработки строк Нам осталось рассмотреть функцию strerror из библиотеки обработки строк. Эта функция представлена на рис. 16.40. Функция принимает номер ошибки и находит в системе строку сообщения об этой ошибке. Возвращается указатель на эту строку. Программа на рис. 16.41 демонстрирует применение strerror. Замечание по мобильности 16.7 Сообщения, генерируемые strerror, являются системно-зависимыми. Использование memchr tinclude <iostream,h> tinclude <string.h> main 0 ( char *s = Это строка ; cout << Оставшаяся часть строки после найденного символа р: (char *) memchr(s, р, 11) \ endl; return 0; Оставшаяся часть строки после найденного символа р: рока Рис. 16.38. Использование функции memchr Функция memset копирует значение байта, являющегося ее вторым аргументом, в заданное число байтов объекта, на который указывает ее первый аргумент. Программа на рис. 16.39 использует memset для копирования б в первые 7 байтов строки stringl. Использование memset I tinclude <iostream.h> tinclude <string.h> main 0 char stringl[15] = ББББББББББББББ ; cout stringl = stringl endl; cout << stringl после выполнения memset = (char *) memset(stringl, 6, 7) endl; return 0; stringl = ББББББББББББББ stringl после выполнения memset = бббббббВББББББ Рис. 16.39. Использование функции memset
Рис. 16.40. Еще одна функция работы с строкой из библиотеки обработки строк Использование strerror .Jtn #include <iostream.h> #include <string.h> Ш main () char stringl[15] = ББББББББББББББ ; cout << strerror(2) << endl; return 0; No such file or directory Рис. 16.41. Использование функции strerror Резюме Структуры являются набором (иногда такой набор называют агрегатом) связанных данных, объединенных одним именем. Структуры могут содержать переменные разных типов данных. Каждое описание структуры начинается с ключевого слова struct. Внутри фигурных скобок в описании структуры записываются ее элементы. Элементы одной структуры должны иметь уникальные имена. Объявление структуры создает новый тип данных, который может использоваться в дальнейшем при объявлении переменных типа структуры. Структуры могут быть инициализированы с помощью списка инициализаторов (начальных значений): вслед за именем в объявлении переменной ставится знак равенства, а затем в фигурных скобках записывается список инициализаторов, разделенных запятой. Если инициализаторов в списке меньше, чем число элементов в структуре, то оставшимся элементам автоматически присваиваются нулевые начальные значения (или значение NULL, если элемент является указателем). Переменную типа структуры можно присваивать другим переменным структурам того же типа. Переменную типа структуры можно инициализировать переменной структурой того же типа. Структуры в целом и отдельные их элементы передаются в функции вызовом по значению. Массивы элементы, конечно, передаются вызовом по ссылке.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |