Menu
Coddy logo textTech

Использование strcat()

Часть раздела Logic & Flow путешествия по C на Coddy — урок 17 из 63.

Вы узнали, как копировать строки с помощью strcpy(), но что, если вы хотите соединить две строки вместе? Это называется конкатенацией, и язык C предоставляет функцию strcat() из библиотеки <string.h> для этой цели.

Функция strcat() добавляет содержимое одной строки в конец другой строки. Она принимает два аргумента: строку назначения (которая будет изменена) и исходную строку (которая будет добавлена в конец).

#include <stdio.h>
#include <string.h>

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // теперь greeting содержит "Hello World"

Крайне важно, чтобы ваша строка назначения имела достаточно места для хранения как исходного содержимого, так и нового добавляемого содержимого. Функция strcat() находит нулевой терминатор в строке назначения, удаляет его, копирует исходную строку в это место и добавляет новый нулевой терминатор в самом конце.

Иногда вам нужно объединить число (например, int) со строкой. Поскольку strcat() работает только с символьными массивами, сначала вам нужно преобразовать число в строку. Вы можете сделать это с помощью sprintf(), которая работает так же, как printf(), но записывает отформатированный результат в символьный массив вместо вывода его на экран. sprintf() является частью <stdio.h>, которая уже включена в большинство программ на C.

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // теперь numStr содержит "42" в виде строки

Как только число будет сохранено в виде строки в numStr, вы можете использовать strcat(), чтобы добавить его к другой строке, как обычно:

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary теперь содержит "Total people processed: 3"

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

challenge icon

Задание

Легко

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

  1. Считать целое число n, представляющее количество людей для обработки
  2. Для каждого человека:
    • Считать его имя (first name) из входных данных
    • Считать его фамилию (last name) из входных данных
    • Создать символьный массив с именем fullName из 100 элементов
    • Использовать strcpy() для копирования имени в fullName
    • Использовать strcat() для добавления одиночного пробела " " к fullName
    • Использовать strcat() для добавления фамилии к fullName
    • Создать символьный массив с именем greeting из 150 элементов
    • Использовать strcpy() для копирования "Hello, " в greeting
    • Использовать strcat() для добавления fullName к greeting
    • Использовать strcat() для добавления "! Welcome to our program." к greeting
    • Вывести итоговое приветственное сообщение
  3. После обработки всех людей создать итоговое сообщение:
    • Создать символьный массив с именем summary из 100 элементов
    • Использовать strcpy() для копирования "Total people processed: " в summary
    • Преобразовать число n в строку и использовать strcat() для добавления его к summary
    • Вывести итоговое сообщение

Не забудьте включить заголовочный файл <string.h> для использования строковых функций.

Ваш вывод должен отображать результаты в следующем формате:

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

Например, если входные данные:

2
John
Doe
Alice
Smith

Ваш вывод должен быть:

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

Эта задача проверяет ваше понимание использования strcat() для объединения нескольких строк, сочетания её с strcpy() для начальной настройки строки и пошагового создания сложных строк из нескольких компонентов.

Попробуйте сами

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    // Считать количество людей
    int n;
    scanf("%d", &n);
    
    // TODO: Напишите свой код ниже
    // Обработать каждого человека и создать приветственные сообщения
    // Затем создать и вывести итоговое сообщение
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow