gpt4 book ai didi

c - 查找回文,不适用于 fgets

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:42 25 4
gpt4 key购买 nike

我想看看一个词/短语是否是回文。我必须使用 fgets 而不是 gets 等...with gets 我的代码有效,但 fgets 无效。谁知道为什么?

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

int main()
{

int i,j,len;
char str[100];
printf("Enter the string: \n");
fgets(str,sizeof(str),stdin);
len=strlen(str);
for(i=0;i<=len;i++)
str[i]=tolower(str[i]);

for(i=0,j=len-1;i<j;i++,j--) {
while (str[i]==' ') i++;
while (str[j]==' ') j--;
if( str[i] != str[j] ) {
printf("NO\n");
return 0;
}
}

printf("YES\n");
return 0;
}

最佳答案

这不适用于 fgets,因为它将尾部 \n 保留在字符串中; gets 不会那样做。

来自documentation :

A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str.

要解决此问题,请调整长度以考虑尾随 \n 标记:转到字符串的末尾,然后向后移动,直到看到非 \n字符。

关于c - 查找回文,不适用于 fgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183687/

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