Probleme avec les fichiers en c
box
-
box -
box -
Bonjour,
quelqu'un pourrait il m'aider pour ecrire des fonctions permettant:
-de retourner le nbre de "A", de "B".."Z" utilises dans un fichier de type TEXTE.(pas de difference entre minuscule et majuscule:la fonction <troupper> permettant la conversion)
- de retourner le nbre total de lettres utilises dans le fichier texte
-de realiser une copie du fichier
-et enfin de retourner le nbre de mots dans ce fichier
merci
quelqu'un pourrait il m'aider pour ecrire des fonctions permettant:
-de retourner le nbre de "A", de "B".."Z" utilises dans un fichier de type TEXTE.(pas de difference entre minuscule et majuscule:la fonction <troupper> permettant la conversion)
- de retourner le nbre total de lettres utilises dans le fichier texte
-de realiser une copie du fichier
-et enfin de retourner le nbre de mots dans ce fichier
merci
A voir également:
- Probleme avec les fichiers en c
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
5 réponses
Salut, pour savoir le nombre de 'a', 'b','c',.... tu peux lire le fichier caractère par caractère et à chaque lecture tu incrémentes un compteur.
exemple: tu crées un tableau de 26 positions (lettre de l'alphabet) et à chaque lecture, tu fait un switch case 'a' incrémenter tab[0], case 'b' incrémenter tab[1], .......
Il y a peu être plus facile mais là direct je vois pas.......
----===Yro===----
exemple: tu crées un tableau de 26 positions (lettre de l'alphabet) et à chaque lecture, tu fait un switch case 'a' incrémenter tab[0], case 'b' incrémenter tab[1], .......
Il y a peu être plus facile mais là direct je vois pas.......
----===Yro===----
La méthode que t'as donné YRO est la methode classique pour compter les caractères et ça marche bien.
pour réaliser une copie de ton fichier tu peux le faire en réalisant une copie tjs caractère par caractère: j'explique tu ouvre ton fichier en lecture, ton nouveau fichier en ecriture avec deux flux distincts, et puis tu lis un caractére et tu l'implementesdans ton fichier en ecriture et à la fin tu ferme tes deux flux.
Pour avoir le nombre de mots dans ton fichier tu l'ouvres et tu le lis tjs caractère par caractère et tu compte le nombre d'espace+1 = nombre de mots.
Voila tout
pour réaliser une copie de ton fichier tu peux le faire en réalisant une copie tjs caractère par caractère: j'explique tu ouvre ton fichier en lecture, ton nouveau fichier en ecriture avec deux flux distincts, et puis tu lis un caractére et tu l'implementesdans ton fichier en ecriture et à la fin tu ferme tes deux flux.
Pour avoir le nombre de mots dans ton fichier tu l'ouvres et tu le lis tjs caractère par caractère et tu compte le nombre d'espace+1 = nombre de mots.
Voila tout
pour la premiere, un simple switch case devrait faire l'affaire...
http://www.commentcamarche.net/c/ccond.php3
Reeter
http://www.commentcamarche.net/c/ccond.php3
Reeter
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
voici une fonction toutes fait mais je n ai pas su la verifier car je n avais mon compilateur sous la main dis moi si ca passe???
void nbcaract (int tab[26],int *nblettre,int *nbmot)
{
FILE *fp;
int i,lettre,premot=1;
for(i=0;i<26;i++) tab[i]=0;
*nblettre=*nbmot=0;
if((fp=fopen(fichier.txt,r))==NULL) printf("Erreur d ouverture fichier");
else{
while((lettre=fgetc(fp))!=EOF)
{
lettre=toupper(lettre);
if(lettre>64 && lettre<91)
{
if(premot==1){*nbmot++;premot=0;}
tab[lettre-65]++;
*nblettre++;
}
else if(lettre!=45) premot=1;
}
}
system("copy fichier.txt fichier2.txt");
}
voici mais verifie la et dis moi ou il y a des erreur car je ne suis pas sur de toupper (il faut peut etre lui force mla main) et de la fonction system qui permet d effectuer des command dos et je na sais plus dans quel librairie mais elle est pas dur a trouver
pour ce qui concere les fichiers que j ai mis en italique et souligne a toi a mettre le chemain d acces et le nom ou si il se trouve dans ton repertoire sous non tous cour je les ai ouvert en lecture seul donc il dois exister
voila bon amusement et si tu as une question ou suggestion je suis la
a+
void nbcaract (int tab[26],int *nblettre,int *nbmot)
{
FILE *fp;
int i,lettre,premot=1;
for(i=0;i<26;i++) tab[i]=0;
*nblettre=*nbmot=0;
if((fp=fopen(fichier.txt,r))==NULL) printf("Erreur d ouverture fichier");
else{
while((lettre=fgetc(fp))!=EOF)
{
lettre=toupper(lettre);
if(lettre>64 && lettre<91)
{
if(premot==1){*nbmot++;premot=0;}
tab[lettre-65]++;
*nblettre++;
}
else if(lettre!=45) premot=1;
}
}
system("copy fichier.txt fichier2.txt");
}
voici mais verifie la et dis moi ou il y a des erreur car je ne suis pas sur de toupper (il faut peut etre lui force mla main) et de la fonction system qui permet d effectuer des command dos et je na sais plus dans quel librairie mais elle est pas dur a trouver
pour ce qui concere les fichiers que j ai mis en italique et souligne a toi a mettre le chemain d acces et le nom ou si il se trouve dans ton repertoire sous non tous cour je les ai ouvert en lecture seul donc il dois exister
voila bon amusement et si tu as une question ou suggestion je suis la
a+