急求!哪位大神帮我看看这段C语言程序的意思?详细解释一下,我是初学者。

fun(char
*a,char *b,char *c)
{
while(*a&&*b)
{
*c=*a; c++; a++;
*c=*b; c++; b++;
}
if(*a=='\0')
while(*b)
{*c=*b; c++; b++;}
else
while(*a)
{*c=*a; c++;
a++;}
*c='\0';
}

这个程序是将字符串a和字符串b交叉存入字符串c中。如a="abc", b="12345";则c="a1b2c345"追问

恩,谢谢,可以帮我在后面写注释吗?有的地方我还是看不懂呀

追答

fun(char *a,char *b,char *c)
{
while(*a&&*b) //循环直到a或b字符串结束,就是‘\0’
{ //交叉将字符串a和字符串b交叉存入字符串c中
*c=*a; c++; a++;
*c=*b; c++; b++;
}
if(*a=='\0') //如果*a=='\0' 则说明b还有字符未存入c中。就是字符串b比a要长
while(*b) //循环知道b结束
{ //将b未加入字符加入到c
*c=*b; c++; b++;
}
else //反之 就是字符串a比b要长
while(*a) //循环知道a结束
{
//将b未加入字符加入到c
*c=*a; c++; a++;
}
*c='\0';//给c字符串加结束符
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-09
fun(char *a,char *b,char *c){}//定义了一个方法,变量是三个字符
while(*a&&*b){}//判断*a和*b是否都有值,有值的话就继续执行括号中的语句
*c=*a; c++; a++; //将字符a赋值给c,然后让c和a自加
*c=*b; c++; b++; //将字符b赋值给c,然后让c和b自加
if(*a=='\0'){}//判断a是否为0
while(*b)
{*c=*b; c++; b++;}//如果b不为0,则将将字符b赋值给c,然后让c和b自加
while(*a)
{*c=*a; c++;a++;}//如果a不为0,则将将字符a赋值给c,然后让c和a自加
*c='\0',将字符0赋给c
第2个回答  2013-07-09

首先 规范的写法

void fun(char* a,char* b,char* c)//char* char 型指针 
{
//*在以下代表取对应的地址 如 a=0xfe,内存中地址为0xfe 的值为3 那么 *a=3 
        while(*a && *b)
        //取*a如果*a值不为0那么取*b,如果也不为0 那么进行循环 直到条件不满足 
       {
        //将*a的值送到c对应的地址中并将a与c对应的地址+1 
             *c=*a; c++; a++;
        //同上 
             *c=*b; c++; b++;
        }
        //如果*a等于'\0'(单引号是取相应字符的ASCII码,\0=0,\是翻译字符),执行if
        //否则执行else  
        //后面这个语句是将较长的字符串的字符补到后面
        //比如a="123",b="abcdef"那么执行到这一句的时候是c="1a2b3c"
        //一下语句完成的是将b多出来的"def"补到c的最后 if-else 语句运行完之后因该是        //c="1a2b3cdef"    
        if(*a=='\0')
        {
        //同上一个循环  
               while(*b)
              { 
                    *c=*b;  
                    c++;  
                    b++; 
                }
        } 
        else
        {
         //同上一个循环  
            while( *a )
           {    
                *c=*a; 
                c++; 
                a++;
            }
           //将*c赋值为0 
            *c='\0';
        } 

//次程序的功能似乎是想实现将字符串a,b交叉输入c中

第3个回答  2013-07-09
这个函数是实现两个字符串的连接……一个a元素后面接一个b元素,然后把字符串a或b未完的接在后面
第4个回答  2013-07-09
他说的对 确实是交叉存放 最后把a或b中 还有的都存入c