Occurence caractere dans un txt en C

Résolu/Fermé
Sid - 20 mars 2008 à 21:17
 gaga - 22 août 2008 à 00:47
Bonjour, je cherche à écrire une fonction permettant d'obtenir l'occurrence d'un caractère dans un fichier txt.
J'ai 4 txt dans 4 langues différentes.
Voila ce que j'ai fait :

#include <stdio.h>

int occurenceLettre(char* lettre,char * langage)
{


char ligne[256];
FILE* f = fopen(strcat(langage,".txt"), "r" );


int occ=0;
int i;

if (f==NULL) {
printf("erreur ouverture\n");
return 1;
}
while (fgets( ligne, 256, f ) != NULL) {
for(i=0;i<256;i=i+1) {
if (strcmp(&ligne[i],lettre)) {
occ=occ+1; }
}
}




int fclose(FILE *f);
return occ;
}


Le compilateur ne trouve pas d'erreur mais ne compile pas non plus.

Merci pour votre aide.
A voir également:

8 réponses

Bonjour,

Tu as écris la fonction occurenceLettre(), il te reste à écrire la fonction Main() qui appelle occurenceLettre() avec lettre et langage en arguments.

Salut.
1
voila ta solution

#include <stdio.h>
#include <string.h>

int occurenceLettre( char*, char*);

int main()
{
int nl;
nl=occurenceLettre("L","c:\\toto");
printf("nombre de lettres L : %d\n",nl);
getch();
return 0;
}




int occurenceLettre(char* lettre,char * langage)
{


char ligne[256];
char fich [256];
FILE* f;
int occ=0;
int i,l;
strcpy(fich,"");
strcat(fich,langage);
strcat(fich,".txt");
/*printf("%s\ %s \n",fich,lettre);*/
f = fopen(fich, "r" );
if (f==NULL) {
printf("erreur ouverture\n");
fclose(f);
return 0;
}
while (fgets( ligne, 256, f ) != NULL) {
l=strlen(ligne);
for(i=0;i<l;i++) {
/*printf("%c %c %d\n", ligne[i],lettre[0],occ);*/
if (ligne[i]==lettre[0]) {
occ=occ+1; }
}
}

close(f);
return occ;
}
1
C'est deja fait :

int main(){
return occurenceLettre("l","dutch");
}


Mais le programme bug quand je lance la compilation.
0
J'ai toujours pas de reponse.
J'arrive pas a faire passer la discussion en non résolu.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ça ne marche toujours pas.
Le programme retourne 0 quelque soit la lettre ou le langage.
Je pense que le problème est au niveau de la comparaison
if (ligne[i]==lettre[0])

Avec strcmp le prog rend 3759 a tous les coups.

Merci.
0
Je t'assure que chez moi ça fonctionne

prend un fichier de quelques lignes , enlève les commentaires et observe ce qui se passe au niveau de la comparaison

A+
0
C'est bon!
Merci encore.
0
moi il marchait avant,mais maintenant il met que des 0 et erreur d'ouverture,ca peut etre du a koi??
0