从键盘输入一个字符串,输出一个新串,使其在原来的每两个字符之间插入一个空格
#include<stdio.h>
#include<math.h>
#include<string.h>
void insert(char *p)
{
char s[20]={0};
int i=0;
for(;i<=strlen(p);i+2)
s[i]=*p++;
while(s[i]==0)
{
s[i]=' ';
i++;
}
}
int main()
{
char c[20];
gets(c);
insert(c);
puts(c);
return 0;
}
bug有点多,首先main函数里的bug,你在对数组cinsert之后没有返回给c,只有一个孤立的insert(c),然后进入insert函数,你要返回给c,那么函数的返回值必然是指针,那么insert函数应该定义是char * insert,其次for循环孤立的i+2是什么意思,甚至没有赋值,我明白你是想在s里跳两个位置此外指针你这用法也有问题,你p是输入数组的头指针,你直接*p++后移,你strlen(p)统计的还是原来数组的长度吗,同学,任重而道远啊,还有gets函数很危险,建议使用fgets
假如上面你都想清楚了,还有一个小细节哦,局部数组用完就会销毁,怎么返回指针呢,答:使用static
S[]并没有给回数组c[]。你打印的是数组C