Occurence caractere dans un txt en C

Résolu
Sid -  
 gaga -
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.
Configuration: Windows Vista
Firefox 2.0.0.12

8 réponses

  1. amigo
     
    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
  2. amigo
     
    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
  3. Sid
     
    C'est deja fait :

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

    Mais le programme bug quand je lance la compilation.
    0
  4. Sid
     
    J'ai toujours pas de reponse.
    J'arrive pas a faire passer la discussion en non résolu.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Sid
     
    Ç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
  7. amigo
     
    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
  8. gaga
     
    moi il marchait avant,mais maintenant il met que des 0 et erreur d'ouverture,ca peut etre du a koi??
    0