Как объединить строки в C: пятиминутное руководство

C Программирование и разработка

Изменение строк — важный навык программирования. Конкатенация включает добавление одной строки в конец другой строки.

Например, предположим, что у нас есть две строки: «Программирование на C» и «язык». Мы можем использовать конкатенацию для генерации вывода «язык программирования C».

Есть несколько способов, которыми мы можем добавлять или объединять строки в C. Это краткое руководство научит вас, как сконцентрировать две строки с помощью strcat()функции.

Освежение струн на C

Строка — один из самых популярных типов данных в программировании. Это набор сгруппированных вместе персонажей. Под капотом строки на самом деле представляют собой массивы символов. Как и в случае с массивами, мы можем получить доступ к строковым элементам через индексацию.

Язык C может быть немного неудобным, когда дело доходит до работы со строками, особенно по сравнению с такими языками, как Python. В C строка обозначается с помощью массива символов. Строку можно объявить с помощью синтаксиса ниже.

char stringName [размер строки];

Ниже переменная aпредставляет собой массив символов, в котором вы можете хранить до 10символов.

char a[10].

И его можно инициализировать следующим образом:

  1. Программа C автоматически вставляет нулевой символ, как показано справа.
  2. Компилятор неявно предоставляет нулевой символ в стиле инициализации, как показано справа.
char  stringName [stringSize] = { 'S' , 'a' , 'n' , 'j' , 'a' , 'y' , '\0' } ;
char  stringName [stringSize] = "Sanjay" ;

Давайте объединим эти концепции на двух примерах.

#include <stdio.h>
int main () {
   char a[5] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’,};
   printf(«String: %s\n», a );
   return 0;
}

Создание строки C: пример 1

#include <stdio.h>
int main(void) {
  printf(«Hello world\n»);
  char c = ‘p’;
  char s[] = «paul»;
  printf(«c=%c and s=%s\n», c, s);
  return 0;
}

Создание строки C: пример 2

В C строки всегда заканчиваются нулем. Это означает, что последний элемент символьного массива является сокращенным «нулевым» символом \0. Когда вы объявляете строку, как в строке 8 выше, компилятор делает это за вас.

Строки постоянных символов записываются в двойные кавычки (см. Строку 5 ниже), а односимвольные переменные объявляются с использованием одинарных кавычек (см. Строку 7 ниже).

Мы можем использовать эту sizeof()функцию для проверки нашей символьной строки выше, чтобы узнать, сколько она на самом деле длины:

#include <stdio.h>
int main(void) {
  char s[] = «paul»;
  printf(«s is %ld elements long\n», sizeof(s));
  return 0;
}

Изменение строк

В C изменить объявленную строку немного сложно. После объявления строки заданной длины вы не можете просто сделать ее длиннее или короче, переназначив новую константу переменной.

Есть много встроенных функций для изменения строк. Рассмотрим две строки s1и s2. Вот несколько встроенных функций, доступных в string.hфайле заголовка:

  • strlen(s1): возвращает длину строки.
  • strcpy(s1, s2): копирует строку s2вs1
  • strrev(s1): переворачивает данную строку
  • strcmp(s1, s2): возвращает 0, если s1и s2содержат ту же строку.
  • strcat(s1, s2): объединяет две строки

Как добавить одну строку в конец другой

В C strcat()функция используется для объединения двух строк. Он объединяет одну строку (источник) с концом другой строки (адресатом). Указатель исходной строки добавляется в конец целевой строки, таким образом объединяя обе строки.

Основной процесс выглядит следующим образом:

  • Возьмите строку назначения
  • Найдите символ NULL
  • Скопируйте исходную строку, начинающуюся с символа NULL целевой строки
  • Добавить символ NULL в строку назначения после копирования

Давайте посмотрим на пример. Ниже приведен следующий код, который объединит две строки с помощью strcat()функции:

Давайте посмотрим на пример

#include <stdio.h>
#include <string.h>
int main()
{
    char destination[] = «Hello «;
    char source[] = «World!»;
    strcat(destination,source);
    printf(«Concatenated String: %s\n», destination);
    return 0;
}

Помимо изменения исходной целевой строки, strcat()функция также возвращает указатель на эту строку. Это означает, что мы можем напрямую передать strcat()функцию в printf()функцию.

#include <stdio.h>
#include <string.h>
int main()
{
    char destination[] = «Hello «;
    char source[] = «World!»;
    printf(«Concatenated String: %s\n»,  strcat(destination,source));
    return 0;
}

В C целевой массив должен быть инициализирован перед его передачей strcat. Это означает, что в нем должно быть хотя бы одно место с символом NULL.

strncat функция добавления символов

strncatФункция немного отличается. Мы можем использовать это для добавления не более чем nсимволов из исходной строки в целевую строку. В приведенном ниже примере добавляются первые 5 символов с srcконца dest(т. Е. Начиная с символа NULL). Затем в конце добавляется символ NULL.

#include <stdio.h>
#include <string.h>
#define DEST_SIZE 40
int main()
{
    char src[] = «World Here»;
    char dest[DEST_SIZE] = «Hello»;
    strncat(dest, src, 5);
    printf(dest);
    return 0;
}

Примечание. Целевой массив должен быть достаточно большим, чтобы вместить следующее: символы места назначения, n символов источника и символ NULL.

Если количество символов для копирования превышает исходную строку, strncatдобавление прекращается, когда встречается символ NULL, как показано ниже:

#include <stdio.h>
#include <string.h>
#define DEST_SIZE 40
int main()
{
    char src[] = «World Here»;
    char dest[DEST_SIZE] = «Hello»;
    strncat(dest, src, 3);
    printf(dest);
    return 0;
}

Дополнительные вопросы по C-строке

Мы можем сделать гораздо больше со строками в C. Взгляните на некоторые из часто задаваемых вопросов на собеседовании о строках, чтобы понять, чему учиться:

  • Редактировать все содержимое строки
  • Замените каждый символ строки другим символом
  • Сопоставьте каждый символ одной строки с другим, чтобы все вхождения были сопоставлены с одним и тем же символом
  • Измените строку так, чтобы каждый символ заменялся следующим символом на клавиатуре.
  • Создайте массив на строках с помощью указателей
  • Преобразование всех букв в строке в прописные
  • Преобразуйте строку в целое число
  • Разделение строки с использованием strtok()в C
Читайте также:  Sublime или Visual Studio Code
Оцените статью
bestprogrammer.ru
Добавить комментарий