使用内置函数
strcpy():
使用字符串 .h头文件中的内置函数strcpy() 将一个字符串复制到另一个字符串。 strcpy() 接受指向目标数组和源数组的指针作为参数,复制后返回指向目标字符串的指针。用%s就可以打印字符串(%s打印从基地地址,直到空字符的字符串)。
下面是使用上述方法的实现:
C
// C program to copy the string using
// strcpy function
#include
#include
#include
// 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;
}
C
// C program to copy the string using
// memcpy function
#include
#include
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char s2[20];
// Function
memcpy(s2, s1, strlen(s1));
printf("%s\n", s1);
return 0;
}
C
// C program to copy string using loops
#include
#include
#include
// Function to copy the string
char* copyString(char s[])
{
int i;
char* s2;
s2 = (char*)malloc(20);
// Executing till null character
// is found
for (i = 0; s[i] != '\0'; i++) {
// Copy the character one
// by one from s1 to s2
s2[i] = s[i];
}
// Return the pointer of newly
// created string
return (char*)s2;
}
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char* s2;
// Function Call
s2 = copyString(s1);
printf("%s", s2);
return 0;
}
C
// C program to copy the string
// using pointers
#include
#include
#include
// 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 != '\0') {
// Copy the content of s1 to s2
*p2 = *p1;
p1++;
p2++;
}
*p2 = '\0';
return s2;
}
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char* s2;
s2 = copyString(s1);
printf("%s", s2);
return 0;
}
C
// C program to copy the string
#include
#include
// 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;
}
C
// C program to copy the string using
// sprintf function
#include
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char s2[20];
// Function
sprintf(s2, "%s", s1);
printf("%s\n", s1);
return 0;
}
GeeksforGeeks
内存():
memcpy() 也在字符串.h 标头中定义,用于从源复制到目标,无论源数据包含什么。 memcpy() 需要传递一个大小参数。
主要区别在于 memcpy() 始终复制指定字节的确切数量;另一方面,strcpy() 和其他 str 方法将复制,直到它读取 NULL (‘\0’) 字节,然后停止。 strcpy() 不打算与以零结尾的 C 字符串一起使用。
memcpy() 经过硬件优化,复制速度更快,适用于任何类型的源数据(例如:二进制或加密字节)。 strcpy() 不应使用,除非有任何特定原因,并且如果您知道字符串的长度,则memcpy() 是更好的选择。
C
// C program to copy the string using
// memcpy function
#include
#include
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char s2[20];
// Function
memcpy(s2, s1, strlen(s1));
printf("%s\n", s1);
return 0;
}
GeeksforGeeks
使用循环
思路是使用for循环将第一个数组的内容一个个拷贝到第二个数组中。
下面是使用上述方法的实现:
C
// C program to copy string using loops
#include
#include
#include
// Function to copy the string
char* copyString(char s[])
{
int i;
char* s2;
s2 = (char*)malloc(20);
// Executing till null character
// is found
for (i = 0; s[i] != '\0'; i++) {
// Copy the character one
// by one from s1 to s2
s2[i] = s[i];
}
// Return the pointer of newly
// created string
return (char*)s2;
}
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char* s2;
// Function Call
s2 = copyString(s1);
printf("%s", s2);
return 0;
}
GeeksforGeeks
使用指针
这个想法是使用指针将字符串数组的内容复制到另一个数组,并通过遍历新指针来打印结果字符串。
下面是使用上述方法的实现:
C
// C program to copy the string
// using pointers
#include
#include
#include
// 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 != '\0') {
// Copy the content of s1 to s2
*p2 = *p1;
p1++;
p2++;
}
*p2 = '\0';
return s2;
}
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char* s2;
s2 = copyString(s1);
printf("%s", s2);
return 0;
}
GeeksforGeeks
使用指针和后增量
这个想法是使用 while 循环将字符串array1 的内容一一分配给字符串array2 并使用 post运算符递增,因为它返回 ASCII 值,因此条件将为真,它将在循环中并传输直到条件为false,我们将退出循环。
下面是使用上述方法的实现:
C
// C program to copy the string
#include
#include
// 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
使用 sprintf()
我们可以将字符串存储在指定的字符缓冲区或 sprintf() 中的目标字符串中以复制字符串,而不是在输出缓冲区中打印字符串。
C
// C program to copy the string using
// sprintf function
#include
// Driver Code
int main()
{
char s1[20] = "GeeksforGeeks";
char s2[20];
// Function
sprintf(s2, "%s", s1);
printf("%s\n", s1);
return 0;
}
GeeksforGeeks
注意:在上述所有方法中,目标数组的大小必须大于源字符串的长度才能复制所有字符。
如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live