c语言,高手来领分吧

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:38:02
#include "stdio.h"
#include<string.h>
main()
{char a[20];
char b[20];
gets(a);
gets(b);
char c[80],*p;
int i=0,j=0,k=0;
while(a[i]&&b[j])
{
if (a[i]) { c[k]=a[i];i++;}
else
c[k]=b[j++];
k++;
}
c[k]='\0';

if(a[i]=='\0')
p=b+j;
else
p=a+i;
strcat(c,p);
puts(c);
}
谁帮我解释一下这个程序,后面我不太看的懂,我觉得改成下面这样应该更简单些:
#include "stdio.h"
#include<string.h>
main()
{char a[20];
char b[20];
gets(a);
gets(b);
char c[80],*p;
int i=0,j=0,k=0;
while(a[i]||b[j])
{
if (a[i]) { c[k]=a[i];i++;}
else
c[k]=b[j++];
k++;
}
c[k]='\0';
puts(c);
}

希望能详细点说说。谢谢了
为什么不直接用下面哪种方法,那不是更简单么?

其实这个程序要实现的功能就是:

#include "stdio.h"
#include<string.h>

main()
{
char a[20];
char b[20];
char c[80]="";

gets(a);
gets(b);
strcat(c,a);
strcat(c,b);

puts(c);
}

即将字符串a、b合并到c,
只不过,拐了几道弯而已。
可能是故意这样写的吧。

当然,你自己的程序是完全正确的。

====================================

附:
原型:extern char *strcat(char *dest,char *src);

用法:#include <string.h>

功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
====================================
如果不用字符串函数,更简洁一点的实现方法:

#include <stdio.h>

main()
{
char a[20];
char b[20];
char c[80];
int i=0,j=0,k=0;

gets(a);
gets(b);

while(a[i])
{
c[k++]=a[i++]