编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放 然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数

来源:互联网 发布:苹果电脑如何安装软件 编辑:程序博客网 时间:2024/06/05 07:40
 编写函数void change(char *a,char *b,char*c)。 
  函数功能是首先把b指向的字符串逆向存放
  然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中

  两个字符串中过长的剩余字符接在c指向数组的尾部。


#include <stdio.h>
#include <stdlib.h>

int mystrlen (char *str)  //字符串的长度
{
int length = 0;

if (str == NULL)
{
return -1;
}

while (*str++)
{
length++;
}
return length;
}

void RevStr (char *str, int len)
{
int i = 0;
char temp = 0;

for (i = 0; i < len / 2; i++) //字符串倒置
{
temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}

void change (char *a, char *b, char *c)
{
int i = 0;
int count = 0;
int blen = mystrlen(b);

RevStr(b, blen); //将字符串b倒置

while (*a)   //遍历a字符串,将a中元素装进c里面
{
*c++ = *a; 
if (count < blen)
{
*c++ = *b++;   //交叉放入c中,a长则把a多余的放入c中,否则把b多余的放入c中
count++;
}
a++;
}
while (*b)
{
*c++ = *b++;
}
*c = '\0';
}

int main()
{
char *a = NULL;
char *b = NULL;
char *c = NULL;
a = (char *)malloc(100 * sizeof(char));
b = (char *)malloc(100 * sizeof(char));
c = (char *)malloc(100 * sizeof(char));

printf ("Please input a string: "); //接收2个字符串
scanf ("%s", a);
printf ("Please input a string: ");
scanf ("%s", b);

change(a, b, c);

printf ("c = %s\n", c); //输出结果

free(c);
c = NULL;
free(b);
b = NULL;
free(a);
a = NULL;

return 0;
}

阅读全文
0 0
原创粉丝点击