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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/while_loop("While Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/CompoundTypesGroup -.-> c/strings("Strings") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/while_loop -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/arrays -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/strings -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/pointers -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/function_declaration -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/create_files -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/user_input -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} c/output -.-> lab-123226{{"Конкатенация строк с использованием указателей"}} end

Создание нового файла

Во - первых, откройте текстовый редактор и создайте новый файл с именем 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. Мы сделали это, присвоив базовый адрес двух строк переменной - символьному указателю, а затем переместили указатель до конца первой строки и скопировали символы второй строки в конец первой. Не забудьте скомпилировать и запустить код, чтобы проверить его работоспособность.