C语言反向输出字符串

本人新手,不知道为什么会出现这样的情况
#include<string.h>
#include<stdio.h>
main ()
{ char a[80],c;
int i,b;
gets(a);
b=strlen(a);
for(i=0;i<b;i++)
{ c=a[i];
a[i]=a[b-i];
a[b-i]=c;
}
printf("%s\n",a);
return 0;
}

#include<string.h>
#include<stdio.h>
main ()
{ char a[80],c;
  int i,b;
  gets(a);
  b=strlen(a);
  for(i=0;i<=b/2;i++)
  { c=a[i];
    a[i]=a[b-1-i];
a[b-1-i]=c;
  }
  printf("%s\n",a);
  return 0;
}

这样就可以了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-01
这很明显是数组越界,当i=0时,a[b-i]这个位置是无效的,要知道i不会等于数组的长度。
相似回答