Rechercher : dans
Par :

[ C ] Lire chaine de caractére d'un fichier

Dernière réponse le 2 oct 2009 à 11:45:12 timon44, le 30 sep 2009 à 12:05:30 
 Signaler ce message aux modérateurs

Bonjour,
je voudrais savoir comment je peux faire pour lire une chaine de caractére à partir d'un fichier texte, et identifier cette chaine.
Voila ce que j'ai fait pour le moment :


#include <stdio.h>
#include <stdlib.h>

void lecture (FILE *fichier){
	int caractereActuel = 0;
        while (caractereActuel != EOF){

            caractereActuel = fgetc(fichier);
	    if (caractereActuel == *";"){
	      printf("%s","\nin the baba\n"); 
	    }
            printf("%c",caractereActuel); 
        } 
}


int main(int argc, char *argv[]){

    FILE *fichier = NULL;

    fichier = fopen("test.txt", "r");
 
    if (fichier != NULL)
    {
   	lecture (fichier);
        fclose(fichier);
    }
 
    return 0;
}


Donc là, je lit bien le fichier et les caractéres sont bien affichés, mais je voudrais comparer des chaines ( par exemple voir si c'est un if, then, else etc ... )

Est ce que vous auriez une idée de comment faire ?

Merci :!
Configuration: Linux
Firefox 3.0.13

Meilleures réponses pour « [ C ] Lire chaine de caractére d'un fichier » dans :
Langage C - Les chaînes de caractères Voir Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Fichier CDA VoirFormat CDA Un fichier CDA est le plus souvent un fichier-"plage" (ou "piste") directement issu d'un CD audio. Lire un fichier CDA Pour lire de tels fichiers, il suffit de télécharger un lecteur capable de lire les CD audio, par exemple...
Fichier MOV VoirFormat MOV Un fichier MOV (Quicktime Movie) est un fichier vidéo propriétaire de la firme Apple, prévu pour être lu en streaming. Lire un fichier MOV Pour lire un tel fichier, il suffit d'utiliser le logiciel Quicktime Alternative
Fichier RM VoirFormat RM Un fichier RM (Real Media) est un fichier audio prévu pour être lu en streaming. Pour lire un tel fichier, il suffit d'utiliser le logiciel Real Alternative

1

Char Snipeur, le 30 sep 2009 à 12:45:03

Il faut faire des tableaux, empilé les caractères avant de les comparer avec strcmp() strcpy() etc. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

3

Nabla's, le 30 sep 2009 à 13:51:32

Et le strstr pour voir si la chaine est présente

Répondre à Nabla's

2

Romrom44, le 30 sep 2009 à 13:43:50
  • +1

Sinon tu peux faire un read de ton file descriptor tout simplement, c'est plus rapide et tu récupère directement le texte dans un char*.

Répondre à Romrom44

4

timon44, le 1 oct 2009 à 12:57:33

Ok, merci, donc j'ai commencé à vouloir empiler les caractéres dans un tableau ... mais j'ai un problème de type ...

#include <stdio.h>
#include <stdlib.h>

void lecture (FILE *fichier){

	int caractereActuel = 0;
	int tab[100];
	int n=0;
        while (caractereActuel != EOF){
            caractereActuel = fgetc(fichier);
	    tab[n] = caractereActuel;
		n++;
        } 
	while (n!=100){
	printf("%c",tab[n]);
	n++;
	}
	printf("\n");
}

int main(int argc, char *argv[]){

    FILE *fichier = NULL;
    fichier = fopen("test.txt", "r");
    if (fichier != NULL)
    {
   	lecture (fichier);
        fclose(fichier);
    }
    return 0;
}


J'aurai bien fait
char* tab[100];
dans la déclaration ... mais ça ne marche ...
Et donc la je suis bloqué ...

Merci !!

Répondre à timon44

5

Romrom44, le 1 oct 2009 à 13:28:08

Void lecture (FILE *fichier)
{
int caractereActuel = 0;
int tab[100];
int n=0;

while (caractereActuel != EOF)
{
caractereActuel = fgetc(fichier);
tab[n] = caractereActuel;
n++;
}
while (n!=100)
{
printf("%c",tab[n]);
n++;
}
printf("\n");
}


Avant de faire ta boucle d'affichage tu ne réinitialise pas n à 0 pour tout afficher depuis le début
Et normalement ca devrait marcher avec un char*

Répondre à Romrom44

6

Romrom44, le 1 oct 2009 à 14:15:06

Et perso par sureté je mettrai un petit \0 après le dernier caractère que tu ai copié dans ta chaîne de caractère.

Mais encore une fois, personnellement, je me répète peut-être mais ce que tu fais, pour moi, ça revient à faire un read ;)

Répondre à Romrom44

7

Char Snipeur, le 1 oct 2009 à 14:37:21

Met "char tab[100]" plutôt que char*... char est un type entier comme int, le seul truc c'est que char est utilisé par défaut pour les caractères. Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

8

 timon44, le 2 oct 2009 à 11:45:12

Ok ! impeccable ça marche !
Romrom44, en fait je veux tester un algorithme qui se trouve dans le fichier test.txt, donc il n'y aura pas de \0 ...

Je voudrais donc mettre le contenu du fichier texte dans un tableau dynamique, mais je n'ai aps trouvé comment faire ... et ce, pour tester si l'algo est correct ... merci !

Répondre à timon44