C - 程序仅检查文件中的第一个单词

时间:2014-11-11 22:21:20

标签: c io char palindrome

C初学者。有什么建议?我有一个包含文本的文件,我必须找到所有可以向前和向后读取的单词(回文),例如旋转器,眼睛等。问题是该程序只检查文件中的第一个单词。 提前谢谢。

这是我现在的代码:

#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;
    }

2 个答案:

答案 0 :(得分:1)

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

我会让你测试循环的内容以及如何检查下一个单词。

答案 1 :(得分:0)

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

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);
}

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