当前位置: 代码迷 >> C语言 >> 错误 4.txt 7: 表达式语法错在 main 函数中
  详细解决方案

错误 4.txt 7: 表达式语法错在 main 函数中

热度:312   发布时间:2007-04-26 11:57:23.0
错误 4.txt 7: 表达式语法错在 main 函数中

该程序是为了把输入的字符串颠倒顺序,例如:输入abcd 输出dcba.
下面程序是哪儿错了?
main()
{
char *p1,*p2,a[40];
scanf("%s",a);
p1=a;
p2=p1+strlen(p1)-1 ;
char b[20]; /*错误 4.txt 7: 表达式语法错在 main 函数中*/
while(p2<p1)
{
b=p2;
p2--;
}
printf("%s",b);
getch();
}

错误 4.txt 7: 表达式语法错在 main 函数中.难道b[20]这样定义有错?

搜索更多相关的解决方案: main  语法  函数  表达  

----------------解决方案--------------------------------------------------------

main()
{
char *p1,*p2,a[40];
scanf("%s",a);
p1=a;
p2=p1+strlen(p1)-1 ;

while(p2<p1)
{
char b[20];
b=p2;
p2--;
}
printf("%s",b);
getch();
}

还是有错


----------------解决方案--------------------------------------------------------
应该是b未定义吧。因为"char b[20]"只在"while"中有效,而"printf("%s",b)"是在main中的。
将"char b[20]"改在"char *p1,*p2,a[40];"下试试?

----------------解决方案--------------------------------------------------------

我现在没C编译程序,不然可以帮你看一下了。


----------------解决方案--------------------------------------------------------

我试一下


----------------解决方案--------------------------------------------------------
可以了,谢谢楼上的那位
----------------解决方案--------------------------------------------------------

这会没有语法错误了.可是结果是乱码.
main()
{
char *p1,*p2,a[40],b[20];
scanf("%s",a);
p1=a;
p2=p1+strlen(p1)-1 ;


while(p2<p1)
{
int i=0;

b[i++]=p2;
p2--;
}

printf("%s",b);
getch();
}


----------------解决方案--------------------------------------------------------

改了下,看看对不对!红色为改后部分!
main()
{
char *p1,*p2,a[40],b[20];
scanf("%s",a);
p1=a;
p2=p1+strlen(p1)-1 ;

int i=0;
while(p2<p1)//while(p2>=p1)
{
//int i=0;

b[i++]=p2;//b[i++]=*p2;
p2--;
}

printf("%s",b);
getch();
}

[此贴子已经被作者于2007-4-26 14:40:37编辑过]


----------------解决方案--------------------------------------------------------

可以了,不过我还是有点不懂为什么要换成b[i++]=*p2 p2不也就是地址了吗?为什么前面还要加个*号呢?

[此贴子已经被作者于2007-4-26 14:49:52编辑过]


----------------解决方案--------------------------------------------------------
以下是引用ycxue46在2007-4-26 14:48:34的发言:

可以了,不过我还是有点不懂为什么要换成b[i++]=*p2 p2不也就是地址了吗?为什么前面还要加个*号呢?


*取内容,前面的b[i++]指数组元素的值,前后要匹配

[此贴子已经被作者于2007-4-26 14:55:08编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案