第一种方法
/***************************
功能:使用指针实现字符串复制
日期:2014年12月7日17:14:02
***************************/
#include <stdio.h>
copy(char *s, char *q);
int main()
{
//char *p;//使用这种方式,编译能通过但是会死机!原因是指针变量p没有初始化,
//直接使用,它不知道指向何处,这就是指针没有初始化带来的灾难性的后果,指针使用前一定要初始化
//char *str="Hello World!";a只想数据节,如果你开辟了字符串, 后面的字符串是常量区的东西, 不可写,这一部分内存是只读的,不能改
//如果char str[]="Hello World!";str就在栈中,可以改
char str[] = "Hello World!";
char p[] = "";
copy(str, p);
printf("%s\n", p);
return 0;
}
copy(char *s, char *q)
{
for (; *s != '\0';)
{
*q = *s;
s++;
q++;
}
*q = '\0';
}
/************************
Hello World!
Press any key to continue
***********************/
第二种方法
/*****************************************
功能:使用指针完成字符串的复制
日期:2014年12月7日22:31:00
*******************************************/
#include<stdio.h>
int main()
{
char str1[10], str2[20];//第二种与第一种关键在这里,这里是先定义了两个字符数组,然后定义两个字符指针,然后给指针赋值
char *p1, *p2;
p1 = str1;
p2 = str2;
printf("Please input original string:\n");
gets(p2);
for (; *p2 != '\0'; p1++, p2++)
{
*p1 = *p2;
}
*p1 = '\0';
printf("The original string is :%s\n The after copy string is :%s\n", str2, str1);
return 0;
}
/********************************
Please input original string:
12asdadad
The original string is :12asdadad
The after copy string is :12asdadad
Press any key to continue
***************************************/