Rechercher : dans
Par :

Occurence caractere dans un txt en C

Dernière réponse le 22 aoû 2008 à 00:47:54 Sid, le 20 mar 2008 à 21:17:34 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Occurence caractere dans un txt en C » dans :
Les chaînes de caractères en C++ 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...
Entrées/sorties : Les flux en C++ VoirEntrées/sorties : les flux en C++ 1. Ouvrir un fichier en lecture 1.1 Ouverture du fichier "donnees.txt" en lecture 1.2 Lecture du contenu de "donnees.txt" 2. Ouvrir un fichier en écriture 2.1 Ouverture du fichier "donnees.txt" en...
Oracle - Echappement de caractères spéciaux VoirPour certaines requêtes SQL, nous avons besoin de rechercher des chaînes de caractères contenant des caractères spéciaux tels que '%' Dans l'exemple suivant, qui est faux, le besoin est de trouver les enregistrements contenant au milieu le...
Langage C - Les chaînes de caractères VoirQu'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...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
Introduction au langage C VoirPetite histoire du C Le langage C a été mis au point par D.Ritchie et B.W.Kernighan au début des années 70. Leur but était de permettre de développer un langage qui permettrait d'obtenir un système d'exploitation de type UNIX portable. D.Ritchie...

1

amigo, le 20 mar 2008 à 22:26:24

Bonjour,

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

Salut.

Répondre à amigo

2

Sid, le 20 mar 2008 à 23:01:53

C'est deja fait :

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


Mais le programme bug quand je lance la compilation.

Répondre à Sid

3

Sid, le 21 mar 2008 à 00:02:48

J'ai toujours pas de reponse.
J'arrive pas a faire passer la discussion en non résolu.

Répondre à Sid

4

amigo, le 21 mar 2008 à 00:03:42

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;
}

Répondre à amigo

5

Sid, le 21 mar 2008 à 00:18:19

Ç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.

Répondre à Sid

6

amigo, le 21 mar 2008 à 00:21:29

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+

Répondre à amigo

7

Sid, le 21 mar 2008 à 00:25:30

C'est bon!
Merci encore.

Répondre à Sid

8

 gaga, le 22 aoû 2008 à 00:47:54

Moi il marchait avant,mais maintenant il met que des 0 et erreur d'ouverture,ca peut etre du a koi??

Répondre à gaga
Collection CommentÇaMarche.net