мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| c:c_ultimate_guide:string.h [2025/11/04 14:31] – создано radi0dev | c:c_ultimate_guide:string.h [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in | ||
|---|---|---|---|
| Строка 22: | Строка 22: | ||
| ===== strcat ===== | ===== strcat ===== | ||
| Функция strcat объединяет две строки в одну. Она имеет следующий прототип: | Функция strcat объединяет две строки в одну. Она имеет следующий прототип: | ||
| - | |||
| <code c> | <code c> | ||
| char *strcat(char *destination_str, | char *strcat(char *destination_str, | ||
| </ | </ | ||
| + | |||
| + | Функция копирует символы из строки source_str в destination_str. При этом первая строка должна иметь достаточную длину, чтобы вместить вторую. | ||
| <code c> | <code c> | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | int main(void) { | ||
| + | char destination[20]; | ||
| + | char source[20] = "Hello world"; | ||
| + | strcpy(destination, | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | ===== strncpy ===== | ||
| + | |||
| + | Стоит отметить, | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | #include < | ||
| + | | ||
| + | int main(void) { | ||
| + | char destination[20]; | ||
| + | char source[20] = "Hello METANIT.COM!!"; | ||
| + | int n = 20; // количество копируемых символов | ||
| + | strncpy(destination, | ||
| + | destination[n-1] = ' | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| </ | </ | ||
| - | ===== strcpy | + | Однако функция strncpy имеет другую проблему - скопированная строка НЕ заканчивается нулевым байтом, |
| + | |||
| + | ===== strncpy_s | ||
| <code c> | <code c> | ||
| + | errno_t strncpy_s(char * destination, | ||
| + | < | ||
| + | Эта функция принимает дополнительные параметры - destmax - максимальное количество копируемых символов в буфер destination и srcmax - максимальное количество копируемых символов из строки source. В качестве результата функция возвращает информацию об ошибке: | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | #include < | ||
| + | | ||
| + | int main(void) { | ||
| + | char destination[20]; | ||
| + | char source[] = "Hello METANIT.COM!"; | ||
| + | int n = 20; // количество копируемых символов | ||
| + | strncpy_s(destination, | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| </ | </ | ||
| ===== strstr ===== | ===== strstr ===== | ||
| + | |||
| + | Функция strstr ищет в строке определенную подстроку. Она имеет следующий прототип: | ||
| <code c> | <code c> | ||
| + | char *strstr(const char* string, const char* substring); | ||
| + | </ | ||
| + | Функция ищет подстроку substring в строке string и возвращает указатель на символ первого вхождения подстроки, | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | int main(void) { | ||
| + | char text[20] = "Hello METANIT.COM!"; | ||
| + | char substring[14] = " | ||
| + | char *substring_ptr = strstr(text, | ||
| + | // если подстрока найдена | ||
| + | if(substring_ptr) { | ||
| + | // вычисляем позицию подстроки в строке | ||
| + | long position = substring_ptr - text; | ||
| + | printf(" | ||
| + | } else { // если подстрока не найдена | ||
| + | printf(" | ||
| + | } | ||
| + | return 0; | ||
| + | } | ||
| </ | </ | ||