94 date:2021.2.18
要点: 字符串连接函数
详细代码如下:
#include <stdio.h>
void fun( char *a )
{
/*
analyse:
遍历前导* -> 放入数组 ->放入字符串尾部
*/
int i = 0, n = 0;
char *p;
p = a; //定义一个指针并指向字符串的首地址
while(*p == '*') //利用循环找出字符串的前导*号的个数
{
n++;
p++;
}
while(*p) //利用循环将剩余的字符拷贝到另外一个字符串中
{
a[i] = *p;
i++;
p++;
}
while(n != 0)
{
a[i] = '*'; //在字符串末尾接上n个*
i++;
n--;
}
a[i] = '\0';
/* error:
int i,j =0,sum = 0;
for(i = 0; a[i] == '*'; i++) //取出前导*
{
a[sum]= a[i];
sum++;
}
for(i = sum+1; a[i] != '\0'; i++) //取出从第一个字母开始到字符串末尾
{
a[j] = a[i];
j++;
}
a[j] += a[sum];
*a = a[j];
*/
/* CHANGE RIGHT:
int i,j =0,sum = 0;
for(i = 0; a[i] == '*'; i++) //取出前导*
{
a[sum]= a[i];
sum++;
}
for(i = sum; a[i] != '\0'; i++) //取出从第一个字母开始到字符串末尾
{
a[j] = a[i];
j++;
}
while(sum != 0)
{
a[j] = '*';
j++;
sum--;
}
a[j] = '\0';
*/
}
void main()
{
char s[81]; int n=0; void NONO ();
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after moveing:\n");puts(s);
NONO();
}