在本指南中,咱们将评论如安在C言语中运用strcpy()函数。strcpy()函数是C言语标准库的一部分,用于执行字符串复制操作。它被包含在string.h头文件中,在运用该函数之前需要导入。
基本用法
strcpy函数的语法是
char* strcpy(char* dest, const char* src);
它是怎么作业的
strcpy()函数用于将源(src)指针所指向的字符串复制到目的(dest)。它接受两个指向char或字符数组的指针参数。该函数将源字符串中的所有字符复制到方针字符串中。该函数还将空的完毕符从源字符串复制到目的地。该函数返回方针字符串的一个指针地址。
为了保证strcpy()函数不修改源字符串,源(src)参数前有一个常数修饰符。
例1
下面的简略程序演示了strcpy()函数是怎么作业的。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "C programming";
char dest[100];
printf("Source string before copy: %s \n", src);
printf("Destination string before copy: %s \n", dest);
strcpy(dest, src);
printf("Source string after copy: %s \n", src);
printf("Destination string after copy: %s \n", dest);
return 0;
}
一旦咱们运转上面的程序,在执行strcpy()函数后,方针字符串的值应该坚持源字符串的值。
例2
让咱们再举一个比如,目的字符串已经持有一个值。例如:假定咱们有一个比如程序,如。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "C programming";
char dest[] = "Hello world from C programming";
printf("Source string before copy: %s \n", src);
printf("Destination string before copy: %s \n", dest);
strcpy(dest, src);
printf("Source string after copy: %s \n", src);
printf("Destination string after copy: %s \n", dest);
return 0;
如上例所示,方针字符串已经包含了一个字符数组。一旦咱们调用strcpy()函数,其内容就会被源字符串的新值所掩盖。
因而,strcpy()函数并没有将源字符串的内容追加到方针字符串中。相反,它用新值完全掩盖了方针字符串。
例3
以下面的比如为例, 目的字符串的大小太小, 无法包容源字符串.
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "C programming";
char dest[10];
printf("Source string before copy: %s \n", src);
printf("Destination string before copy: %s \n", dest);
strcpy(dest, src);
printf("Source string after copy: %s \n", src);
printf("Destination string after copy: %s \n", dest);
return 0;
}
假如你运转上面的程序,它不会崩溃。然而,正如你所看到的,方针字符串的大小太小,无法包容源字符串。
由于strcpy()函数没有查看方针字符串的大小是否足以存储源字符串,它将开端复制字符串,直到它到达空完毕符。这将导致程序溢出并掩盖或许用于其他变量的内存方位。
在咱们上面的比如中,这将导致程序掩盖源字符串自身,发生如图所示的输出。
例4
另一个常见的过错是将一个字符串字头传递给strcpy()函数作为方针字符串。
比如说。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "C programming";
printf("Source string before copy: %s \n", src);
strcpy(" ", src);
printf("Source string after copy: %s \n", src);
return 0;
}
上面的比如程序会引起过错,程序会因分段故障而崩溃。
完毕
在这个快速教程中,咱们评论了你能够运用C言语的strcpy()函数将一个字符串从源头复制到目的地的各种情况。保证strcpy()函数正常运转以防止呈现内存溢出等过错是很好的。