Различные способы копирования строки в C / C ++

Опубликовано: 30 Ноября, 2021

Использование встроенной функции

Использование встроенной функции strcpy () из файла заголовка string.h для копирования одной строки в другую. strcpy () принимает указатель на целевой массив и исходный массив в качестве параметра и после копирования возвращает указатель на целевую строку. Используя% s, мы можем распечатать строку (% s печатает строку от базового адреса до нулевого символа).

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

C

// C program to copy the string using
// strcpy function
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Function to copy the string
char * copyString( char s[])
{
char * s2;
s2 = ( char *) malloc (20);
strcpy (s2, s);
return ( char *)s2;
}
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks" ;
char * s2;
// Function Call
s2 = copyString(s1);
printf ( "%s" , s2);
return 0;
}
Выход:
GeeksforGeeks

используя петли

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

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

используя указатели

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

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

C

// C program to copy the string
// using pointers
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Function to copy the string
char * copyString( char s[])
{
char *s2, *p1, *p2;
s2 = ( char *) malloc (20);
p1 = s;
p2 = s2;
// Executing till the null
// character is found
while (*p1 != '' ) {
// Copy the content of s1 to s2
*p2 = *p1;
p1++;
p2++;
}
*p2 = '' ;
return s2;
}
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks" ;
char * s2;
s2 = copyString(s1);
printf ( "%s" , s2);
return 0;
}
Выход:
GeeksforGeeks

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

Идея состоит в том, чтобы использовать цикл while для присвоения содержимого строкового массива1 строковому массиву2 один за другим и увеличения с помощью оператора post, поскольку он возвращает значение ASCII, поэтому условие будет истинным, и оно будет в цикле и будет передаваться до тех пор, пока условие не станет false, и мы выйдем из цикла.

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

C

// C program to copy the string
#include <stdio.h>
#include <stdlib.h>
// Function to copy the string
void copyString( char * t, char * s)
{
// (return ASCII value which is True,
// therefore will be in the loop
// till the condition is False
while (*t++ = *s++)
;
}
// Driver Code
int main()
{
char s2[20] = "GeeksforGeeks" ;
char s1[20];
// Function Call
copyString(s1, s2);
printf ( "%s" , s1);
return 0;
}
Выход:
GeeksforGeeks

Примечание. Во всех перечисленных выше методах размер целевого массива должен быть больше, чем длина исходной строки, чтобы скопировать все символы.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .