строка.ч выходная слова с


Мне нужно сравнить первую и последнюю буквы в слове; если эти буквы одинаковы, мне нужно вывести это слово в файл. Но я беру слова из другого файла. Моя проблема в том, что я не могу угадать, как я должен выводить все слова, потому что в моем коде он выводит только первое слово. Поэтому я понимаю, что у меня нет перехода к другим.

#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("ERRORn");
        exit(1);
    }

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

    printf("My string is %d symbolsn", 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("%sn",ptr);
        }
    }

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

    return 0;
}

В моем первом файле есть слова:

high day aya aya eye that

Из моих слов из первого файла он выводит только первое слово

high

К второй файл. Я ожидаю следующего:

high aya aya eye
1 3

1 ответ:

Вы ничего не выводите в файл, кроме как в самом конце, когда вы fprintf всю строку:

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

Вам нужно изменить printf("%s\n",ptr); на fprintf(out,"%s\n",ptr); в этом цикле for. В противном случае он просто выведет все на консоль.