2016-12-08 2 views
3

Je dois comparer la première et la dernière lettre d'un mot; si ces lettres sont identiques, je dois sortir ce mot dans un fichier. Mais je prends des mots d'un autre fichier. Mon problème est que je ne peux pas deviner comment je devrais produire tous les mots parce que dans mon code, il produit seulement le premier mot. Donc, je comprends que je n'ai pas de transition vers les autres.string.h mots de sortie 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; 
} 

Dans mon premier fichier il y a des mots:

high day aya aya eye that 

De mes mots du premier fichier, il ne sort que le premier mot

high 

au second fichier. Je me attends à ce qui suit:

high aya aya eye 
+0

Que voulez-vous dire "il ne fait que le premier mot"? Pour l'entrée spécifiée, quelle est la sortie réelle et attendue? Et avez-vous essayé de parcourir le code ligne par ligne dans un débogueur? Est-ce que les fonctions 'my_strlen' et' mystrtok' fonctionnent comme elles le devraient? * Pourquoi * avez-vous vos propres fonctions de chaîne au lieu d'utiliser les fonctions standard? –

+0

Qu'est-ce qui se passe avec 'my_strlen' et' mystrtok'? Quelle bibliothèque utilisez-vous? –

+0

Cela signifie qu'il sort le premier mot (avec le même mot et la même dernière lettre) ce dont j'ai besoin mais il y en a plus d'un. mes fonctions fonctionnent. Pour vérifier je peux utiliser la bibliothèque j'utilise mes propres fonctions parce que c'est une condition spéciale pour ce programme. –

Répondre

2

Vous n'êtes pas quoi que ce soit au sortir fichier, sauf à la fin quand vous fprintf la chaîne entière:

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

Vous devez changer printf("%s\n",ptr);-fprintf(out,"%s\n",ptr); en ce que pour boucle. Dans le cas contraire, tout sera simplement sorti sur la console.

+0

Merci beaucoup, maintenant j'ai ce que je voulais, c'est assez facile mais j'ai besoin de ça Ahahha merci, merci, merci !!!! –