无法理解语法错误在哪里

时间:2016-06-05 17:39:54

标签: c

这是用于检查字符串是否为回文的代码(用C语言编写)。但它包含语法错误。在第二个for循环中,它表示

  

预期“)”之前;

图片:

enter image description here

代码:

int i,j,c=0,flag=0;
char input[3];
printf("Enter a string\n");
scanf("%s",&input);
for(i=0;input[i]!='\0';i++) {
    c++;
}
for(i=0;j=c-1;i<=j;j>=0;i++;j--) {   // error shows in this line
    if(input[i]==input[j]){
        flag=1;
        break;
    }
}
if(flag==1){
    puts("character is a palindrome");
}
else
{
    puts("character is not a palindrome");
}

2 个答案:

答案 0 :(得分:3)

1)scanf("%s",input)而非scanf("%s",&input)

input保存数组的地址。 &input传递input的地址。

2)for循环的语法是:

for ( init; condition; increment ) {
  //code
 }

因此for循环应为:

for(i=0,j=c-1;i<=j && j>=0;i++,j--)

答案 1 :(得分:1)

这句话:

for(i=0;j=c-1;i<=j;j>=0;i++;j--) { 

有6个部分,但for()语句只允许3个部分。

推荐:

for(i=0, j=c-1; i<=j, j>=0; i++, j--) { 

请注意正确使用逗号分隔语句的三个部分中的表达式。

代码还存在其他问题,但上面将介绍如何使用已发布的代码进行编译