gpt4 book ai didi

C 中的编译器错误 - ')' 标记之前应为 '!'。

转载 作者:行者123 更新时间:2023-11-30 18:42:30 25 4
gpt4 key购买 nike

我正在编写一个基本程序来检查字符串是否是回文。

#include <stdio.h>
#include <string.h> //Has some very useful functions for strings.
#include <ctype.h> //Can sort between alphanumeric, punctuation, etc.

int main(void)
{

char a[100];
char b[100]; //Two strings, each with 100 characters.

int firstchar;
int midchar;
int lastchar;

int length = 0;
int counter = 0;

printf(" Enter a phrase or word for palindrome checking: \n \n ");

while ((a[length] == getchar()) !10 ) //Scanning for input ends if the user presses enter.
{
if ((a[length -1]), isalpha) // If a character isalpha, keep it.
{
b[counter] = a[length-1];
counter++;
}

length--; //Decrement.
}

makelower(b, counter); //Calls the function that changes uppercase to lowercase.


for( firstchar = 0; firstchar < midchar; firstchar++ ) //Compares the first and last characters.
{
if ( a[firstchar] != a[lastchar] )
{
printf(", is not a palindrome. \n \n");
break;
}
lastchar--;
}

if( firstchar == midchar )
{
printf(", is a palindrome. \n \n");
}


return 0;
}


//Declaring additional function "makelower" to change everything remaining to lowercase chars.


int makelower (char c[100], int minicount)
{
int count = 0;
while (count <= minicount)
{
c[count] = tolower(c[count]);
}
return 0;
}

我在第一个 while 循环行(紧随 printf 语句之后)收到以下编译器错误:

p5.c: In function 'main':
p5.c:30: error: expected ')' before '!' token

我上下查找过,但没有发现任何不合适或不匹配的括号。我唯一能想到的是我缺少一个逗号或某种标点符号,但我尝试在几个地方放置逗号但无济于事。

抱歉,如果这太具体了。提前致谢。

最佳答案

while ((a[length] == getchar())  !10 )

您正在尝试的是将 getchar() 的结果分配给 a[length] 并验证它不等于 10. .拼写如下:

while ((a[length] = getchar()) != 10) 

= 是赋值,== 是测试。

此外,你的计数器也很困惑。 length 初始化为0 并且只递减,这会导致第一次递减后从数组的前面掉下来。这种情况不会发生,因为您尝试访问 a[length-1],这也会失败。这看起来像 off-by-one error ,也称为 fencepost error ,在访问刚刚从 getchar() 读取的字符时。

此外,由于没有任何东西检查记录输入的长度是否超过缓冲区 a[100] 的长度,因此您也可能会从那里掉下来。

回文检查功能的计数器也已关闭。 midcharlastchar 永远不会初始化,midchar 永远不会设置,并且 lastchar 会递减而无需设置值。您可能最好测试 a[firstchar] == a[(counter-1)-firstchar]

关于C 中的编译器错误 - ')' 标记之前应为 '!'。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16472138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com