объединяет " Хорошо" с именем пользователя и c символьной строкой MSG
в одну строку.СОЗДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ
Не ограничивайте себя при вводе и выводе только этими библиотечными функциями. Если у вас нет нужной функции, или она вам не нравится, можно создавать свои собственные версии, используя для этого getchar( )
и putchar( ).Предположим, у вас нет функции puts( )
. Вот один из путей ее создания:
Предположим, у вас есть puts( )
, но вам нужна функция, которая, кроме того, сообщает, сколько напечатано символов. Эту возможность легко добавить:Вызов:
печатает строку пицца, в то время как оператор
передаст, кроме того, количество символов в num;
в данном случае это число 5. Вот несколько более сложный вариант, показывающий вложенные функции:(Мы включили в программу при помощи директивы #include
файл stdio.h, потому что в нашей системе в нем определена функция putchar( ), а она используется в нашей новой функции.)Да-а, мы используем функцию printf( )
для печати значения put2( ), но в процессе нахождения значения put2( ) компьютер должен сначала заставить ее поработать - напечатать строку. Вот что получается при этом:Теперь вы можете построить работающую версию функции gets( );
она должна быть похожа на нашу функцию getint( ) из гл. 10, но гораздо проще ее.ФУНКЦИИ, РАБОТАЮЩИЕ СО СТРОКАМИ
Большинство библиотек языка Си снабжено функциями, работающими со строками. Рассмотрим четыре наиболее полезных и распространенных: strlen( ), strcat( ), strcmp( ) и strcpy( )
.Мы уже применяли функцию strlen( )
, которая находит длину строки. Используем ее в нижеследующем примере функции, укорачивающей длинные строки.Функция strlen( )
Проверьте ее в "деле" в этой тестовой программе:
Программа выдает:
Наша функция помещает символ '\0'
в одиннадцатый элемент массива, заменяя символ пробела. Остаток массива остается на старом месте, но puts( ) прекращает работу на первом нуль-символе и игнорирует остаток массива.Функция strcat( )
Вот что умеет делать функция strcat( )
: