为什么小弟我用printf,scanf代替puts和gets程序的功能实现不了

为什么我用printf,scanf代替puts和gets程序的功能实现不了
#include<stdio.h>
#include<string.h>
void main()
{ char a[80],b[]="ab",max;
  int i=1,j;
  printf("Input a string\n");
  gets(a); ....................../* 用scanf("%s",a)代替 */
  max=a[0];
  while(a[i]!='\0')
  { if(a[i]>max)
  {max=a[i],j=i;}
  i++;
  }
  for (i=strlen(a)+2;i>j;i--)
a[i]=a[i-2];
  a[i+1]='a';a[i+2]='b';

  puts(a); .........................../* 用printf("%s",a)代替 */  
}


我用scanf和printf代替 程序运行不了

------解决方案--------------------
因为printf和scanf对应的是字符串,而gets和puts对应的是单个字符,相当于scanf("%c",&a),printf("%c",a).
------解决方案--------------------
printf("%s\n",a);