Конкатенация строк с использованием указателей

CBeginner
Практиковаться сейчас

Введение

В программировании на языке C можно объединять (конкатенировать) две строки с использованием указателей. Для этого нужно присвоить базовый адрес двух строк переменной-указателю на символы, переместить указатель в конец первой строки и затем скопировать символы второй строки в конец первой.

В этом практическом занятии (лабораторной работе) вы научитесь объединять две строки с использованием указателей на языке программирования C.

Создать новый файл

Во - первых, откройте текстовый редактор и создайте новый файл с именем main.c в директории ~/project/.

Включить заголовочные файлы

На этом этапе подключите необходимые заголовочные файлы в программу: stdio.h и stdlib.h.

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

Определить функцию main()

Функция main() используется для определения тела программы на языке C.

int main(){
  // TODO: Write code here
  return 0;
}

Объявить переменные

На этом этапе объявите два символьных массива aa и bb, каждый размером 100 байт.

char aa[100], bb[100];

Ввести строки

На этом этапе пользователь введет значения для двух строк aa и bb и сохранит их с использованием функции gets().

printf("Enter the first string: ");
gets(aa);

printf("Enter the second string to be concatenated: ");
gets(bb);

Конкатенация строк

На этом этапе мы определим два символьных указателя a и b и начнем объединять вторую строку bb с первой строкой aa.

char *a = aa;
char *b = bb;

while(*a){
  a++;
}

while(*b){
  *a = *b;
  b++;
  a++;
}
*a = '\0';
  • *a указывает на следующую ячейку памяти, пока не достигнет конца первой строки aa. Это достигается с использованием выражения while(*a).
  • Здесь a инкрементируется до следующей ячейки памяти до тех пор, пока не достигнет конца первой строки aa.
  • *b указывает на следующую ячейку памяти до тех пор, пока не достигнет конца второй строки bb. Это достигается с использованием выражения while(*b).
  • Для каждой ячейки памяти a присваивается значение, на которое указывает b, а затем и a, и b инкрементируются. Это достигается с использованием выражения *a = *b; b++; a++;
  • '\0' представляет конец строки.

Вывести конкатенированную строку

На этом этапе выведите объединенную строку после завершения процесса конкатенации.

printf("\nThe string after concatenation is: %s ", aa);

Компилировать и запустить

На этом этапе скомпилируйте и запустите файл main.c с использованием следующих команд:

gcc main.c -o output
./output

Полный код

Ниже приведен полный код программы по конкатенации строк с использованием указателей:

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

int main(){
  char aa[100], bb[100];

  printf("Enter the first string: ");
  gets(aa);

  printf("Enter the second string to be concatenated: ");
  gets(bb);

  char *a = aa;
  char *b = bb;

  while(*a){
    a++;
  }

  while(*b){
    *a = *b;
    b++;
    a++;
  }
  *a = '\0';

  printf("\nThe string after concatenation is: %s ", aa);

  return 0;
}

Резюме

В этом практическом занятии (лабораторной работе) вы научились конкатенировать две строки с использованием указателей на языке программирования C. Мы сделали это, присвоив базовый адрес двух строк переменной - символьному указателю, а затем переместили указатель до конца первой строки и скопировали символы второй строки в конец первой. Не забудьте скомпилировать и запустить код, чтобы проверить его работоспособность.