c语言问题:error C2059: syntax error : ']'

#include <string.h>
#include <stdio.h>

void reverse(char s[])
{
int c,i,j;
for(i=0,j=strlen(s)-1;i<j;i++,j--)
c=s[i];
s[i]=s[j];
s[j]=c;
}

main()
{
char s[20];
char a;
printf("input the string");
scanf("s[]=%s",&s);
s[]=reverse();
printf("s[]=%s",s);
return a;
}

运行结果:
Compiling...
1109.cpp
F:\C_language_example\vcexample\1109.cpp(19) : error C2059: syntax error : ']'
Error executing cl.exe.

1109.obj - 1 error(s), 0 warning(s)

我是初学者,对字符串的输入输出总是不太清楚,运行提示的是s[]=reverse();这一行有错误,不知如何修改,s什么时候带[],什么时候不带。请哪位高人帮我指点一下。

你的reverse定义为void,都没返回值,你怎么给s[]赋值,
s[]=reverse();没有参数传递的啊(void reverse(char s[]) )

还有就是你的那个s[]写法也有问题,你的主函数main()没有定义要有返回值的吧,怎么又有一个return a
问题多多
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-11-09
scanf("s[]=%s",&s); s[]=reverse();
应分别改成scanf("s[]=%s",s); s[]=reverse(s);
s[]是字符数组,s就代表首地址
第2个回答  2007-11-09
不要误人子弟好不好
scanf("s[]=%s",&s); s[]=reverse();
这里改成
scanf("s[]=%s",s);
reverse(s);
就可以了 数组当实参时 传的就是地址
第3个回答  推荐于2018-05-04
你输入的数的个数不确定用指针比较好,还有函数里面的参数要用数组就要标出大小,要不也用指针

#include <string.h>
#include <stdio.h>

void reverse(char *s)
{
int c,i,j;
for(i=0,j=strlen(s)-1;i<j;i++,j--)
{c=s[i];
s[i]=s[j];
s[j]=c; }
}

main()
{
char s[20];
char a;
printf("input the string\n");
scanf("%s",s);
reverse(s);
printf("s[]=%s",s);
return a;
}本回答被提问者和网友采纳
相似回答