#include <stdio.h> int main(){ char a[]="abcdefg"; char b[]="hijklmnopq"; char c[10]; void copy_string(char from[],char to[]); void copy_string_null(char form[],char to[]); printf("string a is:%s\nstring b is:%s\n",a,b); printf("把a复制到b后:\n"); copy_string(a,b); printf("string a is:%s\nstring b is:%s\n",a,b); for(int i=0;b[i]!='q';i++) printf("%c",b[i]); printf("\n"); copy_string_null(a,c); printf("把a复制到c后:\n"); printf("string a is:%s\nstring c is:%s\n",a,c); return 0; } void copy_string(char from[],char to[]){ int i; for(i=0;from[i]!='\0';i++) to[i]=from[i]; to[i]='\0';//很关键的 不能掉 } void copy_string_null(char from[],char to[]){ int i; for(i=0;from[i]!='\0';i++) *(to+i)=*(from+i); *(to+i)='\0'; }
输出结果如下:
string a is:abcdefg
string b is:hijklmnopq
把a复制到b后:
string a is:abcdefg
string b is:abcdefg
abcdefg q
把a复制到c后:
string a is:abcdefg
string c is:abcdefg
注意: 27行的 to[i]='\0' 不能掉了 %s是遇到'\0'才停止,如果不在复制后的b[i]位置加上'\0'的话 12行输出的b会把多余a的部分都显示出来;