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<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++]