2012-09-22 3 views
0

Je lis un fichier de dictionnaire ligne par ligne et je prends chaque ligne puis je la compare avec une chaîne. Mon problème est que je ne sais pas comment allouer dynamiquement une longueur de la chaîne sur chaque ligne pour supprimer les espaces. Je vais vous expliquer cela après avoir vu mon code:Lire un fichier de dictionnaire ligne par ligne prend des chaînes avec des tonnes d'espaces

FILE *f; 
f = fopen("/usr/share/dict/words", "r"); 
if (f != NULL) 
{ 
    // maximum size of line, keep it at 128 just in case 
    char line[128] = ""; 

    // run through every line of file 
    while (fgets(line, sizeof(line), f)) 
    { 
     if (strcmp("hello", line) == 0) 
      printf("The string is %s!", line); 
    } 
} 

donc je dois initialiser la variable « ligne » de prendre la longueur maximale d'une ligne. C'est juste que si la ligne est plus petite que cette valeur de 128, cela ajoutera simplement des espaces à la fin, ce qui entraînera une comparaison invalide. Comment puis-je changer cela?

Répondre

1

Non, cela n'ajoute pas beaucoup d'espace, fgets quitte la nouvelle ligne dans le tampon, cependant. Donc, vous avez normalement un caractère d'espacement final. Corrigez-le par

int len = strlen(line); 
if (line[len-1] == '\n') { 
    line[len-1] = 0; 
} 
+0

Alors, comment dois-je résoudre ce problème? Aussi, y a-t-il une meilleure façon d'utiliser le tampon? – Ray

+0

Correction maintenant dans la réponse. Que voulez-vous dire par "meilleure façon"? La façon dont il est utilisé est bonne. –

+0

Oh, d'accord. Je me demandais juste. – Ray

Questions connexes