strcpy的作用在哪里?

来源:百度知道 编辑:UC知道 时间:2024/06/10 17:47:23
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char source[]="The source string";

main()
{
char *dest1=NULL;
char *dest2=malloc(sizeof(source)+1);

dest1=source; //方案一
puts(dest1);

strcpy(dest2,source); //方案二
puts(dest2);

}
这是书上的一个演示
既然方案一可行,为何要用方案二。只是演示而已?
那么为什么还要有strcpy?
能不能举几个strcpy实用的例子?
谢谢
谢谢各位
char from[10];
/*如果在定义数组时没有初始化,而之后又想赋以内容,不能
from[10]="ni hao a!"而应用*/
strcpy(from,"ni hao a!");
这个是关键

既然方案一可行,为何要用方案二
这正是显示了C语言的灵活性,同一个目的可以用多种方法实现.
strcpy是字符串拷贝函数:如
strcpy(dest2,source); 是将字符串source拷贝到指针dest2所指向的内存单元。
而方案一是直接让指针dest1指向source的首地址。
malloc(sizeof(source)+1);是开辟一个连续的内存单元区,其长度比source的有效长度大1,也就是source的实际长度(带一个结束标志'\0')

例子:
#include<stdio.h>
#include<string.h>
void main()
{
char from[10]="ni hao a!";
char to[20];
/*现在要将from复制到to,不能用
to[20]=from[10]而是*/
strcpy(to,from);
puts(to);
}
-----------------
#include<stdio.h>
#include<string.h>
void main()
{
char from[10];
/*如果在定义数组时没有初始化,而之后又想赋以内容,不能
from[10]="ni hao a!"而应用*/
strcpy(from,"ni hao a!");
puts(from);
}

  字符串拷贝。将src指向的字符串拷贝到dest,字符串以'\0'结束。
  C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dst开始的地址空间。
  原型声明:char *strcpy(char* dest, const char *src);