可以看下代码问题在哪里吗?(9.188)

从键盘输入一个字符串,输出一个新串,使其在原来的每两个字符之间插入一个空格

#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