C语言初学者问题~~`HELP~!
/* 请编写一个函数fun(char *s),该函数的功能是把字符串中的内容逆置.
例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba. */
#include <stdio.h>
#include <string.h>
fun(char *s)
{
int i,j=strlen(s);
char b,c[100];
for(i=0;i <j/2;i++,j--)
{
b=*(s+i);
*(s+i)=c[j];
c[j]=b;
}
c[j]= '\0 ';
puts(c);
}
main()
{
char a[100];
gets(a);
fun(a);
}
请问错在什么地方啊`~~谢谢大家了```
[解决办法]
#include <stdio.h>
#include <string.h>
void fun(char *s)
{
int i,j=strlen(s);
char b,c[100];
for(i=0;i <strlen(s);i++,j--) // j--在变化
{
b=*(s+i);
/**(s+i)=c[j]; */ c[j] 初始根本就没值,你这里意思就是想把把输入进的字符串的值一个个的放在b里保存,然后逆序再赋给数组C吧?如果是这样,这句没必要.
c[j-1]=b; // 数组下标是从0开始的,最后的下标应该是数组长度-1.
}
j = strlen(s); // 这里应该是把C数组最后的元素赋 '\0 ',你那是把最初的赋 '\0 ',会什么都看不见的..
c[j]= '\0 ';
puts(c);
}
int main()
{
char a[100];
gets(a);
fun(a);
return 0;
}