string.h 输出单词 C 的内容

3

我需要比较单词的第一个和最后一个字母;如果这些字母相同,我需要将该单词输出到文件中。但是我从另一个文件中获取单词。我的问题是我不知道如何输出所有单词,因为在我的代码中,它仅输出第一个单词。因此我明白我没有转换到其他单词。

我需要比较单词的首尾字母是否相同,如果相同则将该单词输出到文件中。然而我的单词来源于另一个文件。我的问题是我不知道如何输出所有单词,因为在我的代码中,它只输出了第一个单词。因此,我意识到我没有转移到其他单词。

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

int main()
{
    char my_string[256];
    char* ptr;

    FILE *f;
    if ((f = fopen("test.txt", "r"))==NULL) {
        printf("Cannot open  test file.\n");
        exit(1);
    }

    FILE *out;
    if((out=fopen("result.txt","w"))==NULL){
        printf("ERROR\n");
        exit(1);
    }

    fgets (my_string,256,f);
    int i;
    int count = 1;

    printf("My string is %d symbols\n", strlen(my_string));

    for (ptr = strtok(my_string," "); ptr != NULL; ptr= strtok(NULL," "))
    {
        int last = strlen(ptr) - 1;
        if ((last != -1) && (ptr[0] == ptr[last]))
        {
            printf("%s\n",ptr);
        }
    }

    printf("\n%s\n",my_string);
    fprintf(out,"%s\n",my_string);
    system("pause");
    fclose(f);
    fclose(out);

    return 0;
}

在我的第一个文件中有一些单词:

high day aya aya eye that

根据我第一个文件中的话,它只输出第一个单词。

high

转到第二个文件。我期望以下结果:
high aya aya eye

你说的“它只做第一个单词”是什么意思?对于指定的输入,实际输出和预期输出是什么?你有尝试通过调试器逐行查看代码吗?my_strlen和mystrtok函数是否按照预期工作?为什么要使用自己的字符串函数而不是标准函数呢? - Some programmer dude
使用my_strlenmystrtok有什么作用?你使用的是哪个库? - Dellowar
这段代码看起来没问题。我怀疑问题可能出在那些自定义函数上。 - Dellowar
啊哈,好的,但是当我从库中调用这些函数时,它们仍然无法正常工作:(( - Nikita Gusev
“不起作用”是一个非常笼统的描述,您应该更好地解释。例如:您的程序输出什么?您期望它输出什么?它是否崩溃?请[编辑]您的问题并添加这些详细信息。另请参阅:[mcve]。顺便说一下:很好,您指定了程序的输入。绝对是一个好的开始。 - anatolyg
显示剩余3条评论
1个回答

2

你在文件中只有在最后使用fprintf输出整个字符串:

fprintf(out,"%s\n",my_string);

在那个循环中,您需要将printf("%s\n",ptr);更改为fprintf(out,"%s\n",ptr);。否则它只会输出到控制台。

非常感谢!现在我得到了我想要的。这是一个相当简单的字符串,但我需要它。啊哈哈,谢谢,谢谢,谢谢!!! - Nikita Gusev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接