在本指南中,咱们将评论如安在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()函数后,方针字符串的值应该坚持源字符串的值。

学习C语言中的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()函数并没有将源字符串的内容追加到方针字符串中。相反,它用新值完全掩盖了方针字符串。

学习C语言中的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()函数没有查看方针字符串的大小是否足以存储源字符串,它将开端复制字符串,直到它到达空完毕符。这将导致程序溢出并掩盖或许用于其他变量的内存方位。

在咱们上面的比如中,这将导致程序掩盖源字符串自身,发生如图所示的输出。

学习C语言中的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()函数正常运转以防止呈现内存溢出等过错是很好的。