#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int main01(int argc, char *argv[])
{
char a[]= "I am a student";//使用字符串初始化数组
char buf[64];
int i = 0;
for(i=0;*(a+i)!='\0';i++)
{
*(buf+i)=*(a+i);
}
//因为没有拷贝\0
buf[i]='\0';
printf("a:%s\n",a);
printf("buf:%s\n",buf);//printf遇到\0停止工作
printf("Hello World!\n");
return 0;
}
//字符串copy函数的技术推演
//字符串copy工作
int copy_str(char* from,char* to)
{
for(;*from != '\0';from++,to++)
{
*to = *from;
}
*to = '\0';
return 0;
}
int copy_str2(char* from,char* to)
{
for(;*from != '\0';)
{
*to++ = *from++;//限制性*to = *from 在执行from++ to++
}
*to = '\0';
return 0;
}
int copy_str3(char* from,char* to)
{
while((*to = *from) != '\0')
{
from++;
to++;
}
return 0;
}
int copy_str4(char* from,char* to)
{
while((*to++ = *from++) != '\0')
{
}
return 0;
}
//不要轻易改变指针的指向,引入一个辅助指针变量,把形参接过来
int copy_str5(char* from,char* to)
{
char *tmpfrom = from;
char *tmpto = to;
if(from == NULL || to == NULL)
{
return -1;
}
while((*tmpto++ = *tmpfrom++));
return 0;
}
int main(int argc, char *argv[])
{
char *from = "I am a student";
char buf2[100] = {0};
//主调函数分配内存
copy_str(from,buf2);
printf("1 buf2:%s\n",buf2);//printf遇到\0停止工作
printf("****************************\n");
//主调函数分配内存
copy_str2(from,buf2);
printf("2 buf2:%s\n",buf2);//printf遇到\0停止工作
printf("****************************\n");
//主调函数分配内存
copy_str3(from,buf2);
printf("3 buf2:%s\n",buf2);//printf遇到\0停止工作
printf("****************************\n");
//主调函数分配内存
copy_str4(from,buf2);
printf("4 buf2:%s\n",buf2);//printf遇到\0停止工作
printf("****************************\n");
//主调函数分配内存
copy_str5(from,buf2);
printf("5 buf2:%s\n",buf2);//printf遇到\0停止工作
printf("Hello World!\n");
return 0;
}