В файле string.h описаны две функции для объединения строк.
Первая strcat() принимает две строки, и приписывает вторую в конец первой. Т.е. результат склеивания двух строк окажется в той, что записана в первом аргументе. Причем нулевой символ ‘\0’ добавляется автоматически в конец новой, получившейся строки. Небольшой иллюстрирующий пример:
Листинг 15.6
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[50] = "hello",
str2[]="world";
strcat(str1," "); //приклеиваем к str1 пробел получаем
//в str1 строку "hello "
strcat(str1,str2);//приклеиваем к str1 строку str2
printf("%s\n", str1); //выводим str1
return(0);
}
Рис.6. Склеивание двух строк функцией strcat().
Вторая функция strncat() отличается от предыдущей, наличием еще одного аргумента, означающего, какое количество символов с начала второй строки следует приклеить к первой строке. Немного переделаем наш предыдущий пример.
strncat(str1,str2,3); //приклеиваем к str1 3 первых //символа из str2
printf("%s\n", str1); //выводим str1
return(0);
}
Рис.7. Использование функции strncat().
Ничего удивительного. Все работает именно так, как и ожидалось.
При работе с этими двумя функциями стоит внимательно следить за тем, чтобы в строке, к которой мы приклеиваем, хватило места, иначе произойдет ошибка переполнения. С ней мы уже сталкивались с прошлом занятии. Вот попробуйте выполнить следующую программу.
Листинг 15.8
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[10] = "hello",
str2[]=" world";
strcat(str1,str2);
printf("%s\n", str1);
return(0);
}
Хотя программа и скомпилируется, но при выполнении возникнет ошибка.
На этом сегодняшний урок мы закончим. Мы рассмотрели лишь некоторые функции, описанные в заголовочном файле string.h. Есть там еще несколько очень интересных и полезных функций, но о них мы поговорим чуть позже, когда познакомимся с указателями.
Отдельного практического задания к этому уроку не будет. Проверьте с помощью стандартных функций программы, написанные к прошлому занятию. А 3,4 и 5 задачи перепишите с использованием стандартных функций.