改错题  
    给定程序MODI1.c中函数fun的功能:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
    例如,在调用fun函数之前给a输入字符串ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为ABC DEF GHI JK。
    请改正程序中的错误,使它能得出正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
    给定源程序如下:
#include <stdio.h>
void  fun(char  *p, char  *b)
{  int  i, k=0;
  while(*p)
  {  i=1;
      while( i<=3 && *p ) {
/**********found**********/
          b[k]=p;
          k++; p++; i++;
      }
      if(*p)
    {
/**********found**********/
        b[k++]=' ';
      }
    }
    b[k]='\0';
}
main()
{  char  a[80],b[80];
  printf('Enter a string:      ');  gets(a);
  printf('The original string: ');  puts(a);
  fun(a,b);
  printf('\nThe string after insert space:  ');  puts(b); printf('\n\n');
}
 
【正确答案】(1)b[k]=*p; (2)b[k]=' ';k++;或直接b[k++]=' '; 答案考生文件夹
【答案解析】(1)在题目中,p是指针型变量作函数参数,因此给b[k]赋值时出现错误。 (2)题目要求赋值3个字符后加一个空格,所以应该是先给b[k]赋值空格,然后变量k加1。其中,''表示字符串应改为' '字符形式。