2016-12-08 19 views
3

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

#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 
+0

Что значит «это только первое слово»? Для указанного ввода, каков фактический и ожидаемый результат? И вы пробовали переходить через код по строкам в отладчике? Функции 'my_strlen' и' mystrtok' работают так, как должны? * Почему у вас есть свои собственные строковые функции вместо стандартных функций? –

+0

Что с помощью 'my_strlen' и' mystrtok'? В какой библиотеке вы используете? –

+0

Это означает, что он выводит первое слово (с тем же самым fisrt и той же последней буквой), что мне нужно, но их более одного. мои функции работа. Для проверки я могу использовать библиотеку Я использую свои собственные функции, потому что это особое условие для этой программы. –

ответ

2

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

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

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

+0

Спасибо большое! Теперь я получаю то, что я хотел. Это довольно простая строка, но мне нужно в ней. Ahahha спасибо, спасибо, спасибо !!!! –