C程序只检查文件中的第一个字

C程序只检查文件中的第一个字,c,io,char,palindrome,C,Io,Char,Palindrome,C这里是初学者。有什么建议吗?我有一个包含文本的文件,我必须找到所有可以前后阅读的单词(回文),例如rotator、eye等等。问题是这个程序只检查文件中的第一个字。 提前谢谢 这是我目前的代码: #include <stdio.h> #include <string.h> int main() { char buffer[255]; char one[255]; char two[255]; char *fp; fp = fope

C这里是初学者。有什么建议吗?我有一个包含文本的文件,我必须找到所有可以前后阅读的单词(回文),例如rotator、eye等等。问题是这个程序只检查文件中的第一个字。 提前谢谢

这是我目前的代码:

#include <stdio.h>
#include <string.h>
int main() {
    char buffer[255];
    char one[255];
    char two[255];
    char *fp;
    fp = fopen("duom.txt", "r");
    fgets(buffer, 255, (FILE*)fp);
    sscanf(buffer, "%s", one);

    strcpy(two, one);
    strrev(two);

    if(strcmp(one, two) == 0)
        printf("%s palindrome\n", one);
    else
        printf("%s not palindrome\n", one);

    return 0;
    }
#包括
#包括
int main(){
字符缓冲区[255];
字符一[255];
字符二[255];
char*fp;
fp=fopen(“duom.txt”,“r”);
fgets(缓冲区,255,(文件*)fp);
sscanf(缓冲区,“%s”,一个);
strcpy(两个,一个);
strev(两个);
if(strcmp(一,二)==0)
printf(“%s回文\n”,一个);
其他的
printf(“%s非回文\n”,一个);
返回0;
}

您的代码只运行一次,您需要将主要分析放在while循环中


我将让您测试循环什么以及如何检查下一个单词。

问题是您需要处理文本中的每个单词,而您只处理一个。为了对文本中的每个单词重复你的逻辑,你需要一个。我不会解释这个概念,因为我提供了一个参考。相反,我将向您展示如何做到这一点:

while (!feof(f)) {                // while there are more characters to be analysed
   fscanf(fp, "%s", one);         // read another word
   strcpy(two, one);              // analyse it
   strrev(two);

   if(strcmp(one, two) == 0)
       printf("%s palindrome\n", one);
   else
       printf("%s not palindrome\n", one);
}

您可以找到我正在使用的feof函数的参考。其余代码与您的代码相同。

这只查看输入文件每行的第一个字。我认为需要有一个嵌套循环,外部循环将一行读取到buffer[]中,内部循环逐步遍历buffer中的可用字符,提取每个连续的单词并检查该单词感谢您的评论。我没注意。但是,fscanf可以与%s说明符一起使用,该说明符读取一个单词,忽略所有空格。我已经更新了我的答案。