新人报到,有以下一个程序,不知其如何运行,还望各位懂的人指点
题目要求是实现两个字符串的连接,但不能用现成的C语言连接函数实现,要自己编写fun,以下是我复制过来的(fun里面是答案,这是一道设计题)
#include <stdio.h>
void fun(char p1[], char p2[])
{
int i,j;
for(i=0;p1[i]!='\0';i++) ; //这句我懂,就是p1[i]若不遇到字符串结束符号就继续进行循环
for(j=0;p2[j]!='\0';j++)//这句就是上面的for的一部分了(2013-9-15 10:27:55今天又意识到昨天想错了,原来这个是单独出来的,因为上一句有一个分号;)
p1[i++]=p2[j];//但是到了这句,我就不明白到底是怎么回事了,p2[j]赋值给了p1[i]之后,那还怎么连接呢?
p1[i]='\0';//然后到了这句,怎么理解? 这几句是我重新编辑的,因为还没理解。时间为2013-9-14 18:23:34。高手请帮忙解答,谢谢!
}
main()
{ char s1[80], s2[40] ;void NONO ();
printf("Enter s1 and s2:\n") ;
scanf("%s%s", s1, s2) ;
printf("s1=%s\n", s1) ;
printf("s2=%s\n", s2) ;
printf("Invoke fun(s1,s2):\n") ;
fun(s1, s2) ;
printf("After invoking:\n") ;
printf("%s\n", s1) ;
NONO() ;
}
void NONO ()
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int i ;
FILE *rf, *wf ;
char s1[80], s2[40] ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", s1) ;
fscanf(rf, "%s", s2) ;
fun(s1, s2) ;
fprintf(wf, "%s\n", s1) ;
}
fclose(rf) ;
fclose(wf) ;
}
特别是fun函数里面,p1[i++]=p2[j];这不是替换之意吗?替换之后还怎么连接,不过我运行之后居然是对的 - -!所以想知道怎么回事
[ 本帖最后由 和规则决裂 于 2013-9-15 10:28 编辑 ]