在此也给出我的另外一种实现方式:
#include <stdio.h>
void copy_string(char from[],char to[]) { int i=0; while((to[i]=from[i++])!='\0'){ ; } return ; }
int main() { char str[]="this is a string!"; printf("%s\n",str); char dec_str[206]; copy_string(str,dec_str); printf("%s\n",dec_str); return 0; } |
运行结果为:
值得注意的是这种实现方式的中的巧妙的利用了while语句while((to[i]=from[i++])!='\0')。千万不要写成 while((to[i++]=from[i++])!='\0'),这样的话每次执行判断语句是i++被执行了两次,导致最终的结果出错。
二、用字符指针变量
#include <stdio.h>
void copy_string(char *from,char *to) { int i=0; while(*from!='\0') *to++=*from++; *to='\0'; return ; }
int main() { char str[]="this is a string!"; printf("%s\n",str); char dec_str[206]; copy_string(str,dec_str); printf("%s\n",dec_str); return 0; } |
运行结果为: