用字符数组作参数
例1.用函数调用实现字符串的复制
#include<stdio.h>
void main()
{void copy_string(char from[],char to[]);
char a[]=″Iam a teacher.″;
charb[]=″you are a student.″;
printf(“string a=%s\nstringb=%s\n″,
a,b);
printf(“copy string a to string b:\n”);
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
}
void copy_string(char from[],char to[])
{inti=0;
while(from[i]!=′\0′)
{to[i]=from[i];i++;}
to[i]=′\0′;
}
程序运行结果如下:
string a=I am a teacher.
string b=you are a student.
copy string a to string b:
string a=I am a teacher.
stringb=I am a teacher.
(2)形参用字符指针变量
#include<stdio.h>
void main()
{void copy_string(charfrom,charto);
char*a=″Iam a teacher.″;
char*b=″you are a student.″;
printf("string a=%s\nstringb=%s\n″,a,b);
printf("copy string a to string b:\n");
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
}
void copy_string(charfrom,charto)
{for(;*from!=′\0′;from++,to++)
*to=from;
*to=′\0′;
}
(3)对copy string函数还可作简化
1、将copy_string函数改写为
void copy_string(charfrom,charto)
{while((to=from)!=′\0′)
{to++;from++;}
}
•copy_string函数的函数体还可改为
{
while((to++=from++)!=′\0′);
}
•copy_string函数的函数体还可写成
{
while(*from!=′\0′)
to++=from++;
*to=′\0′;
}
•上面的while语句还可以进一步简化为下面的while语句:
while(to++=from++);
它与下面语句等价:
while((to++=from++)!=′\0′);
将from赋给to,如果赋值后的to值等于′\0′则循环终止(′\0′已赋给to)
•函数体中while语句也可以改用for语句:
for(;(to++=from++)!=0;);
或
for(;to++=from++;);
•也可用指针变量,函数copy_string可写为
void copy_string(char from[],charto[])
{char*p1,*p2;
p1=from;p2=to;
while((p2++=p1++)!=′\0′);
}