Compter les caractere dans un fichier (espaces inclus)

Pitdeboole Messages postés 3 Date d'inscription mardi 31 mai 2011 Statut Membre Dernière intervention 5 juin 2011 - 2 juin 2011 à 00:58
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 - 6 juin 2011 à 10:45
salut à tous je fais mes premiers pas dans le domaine de la programmation j'ai un probleme que j'arrive pas a resoudre: lire un texte au clavier l'enregistrer dans un fichier.txt puis compter le nombre de caractere sy trouvant en comptant aussi les espace
voici ce que j'ai fais mais ne compte pas les espace
----------------------------------------------
#include <stdio.h>
#include <stdlib.h>

main()
{

char NOM_FICH[] = "E:\\MOTS.TXT";
FILE *FICHIER;

char *CHAINE;

FICHIER = fopen(NOM_FICH, "w");
if (!FICHIER)
{
printf("\aERREUR: Impossible d'ouvrir "
"le fichier: %s.\n", NOM_FICH);
exit(-1);
}

printf("*** Création du fichier %s ***\n", NOM_FICH);
do
{
printf("Entrez un mot ('*' pour finir) : ");
scanf("%s", CHAINE);
if (*CHAINE != '*')
fprintf(FICHIER, "%s", CHAINE);
}
while (CHAINE[0] != '*');

fclose(FICHIER);
return 0;
}

svp dite moi ce qui manque a ce code pour quil fonction comme je veux
merci

2 réponses

Pitdeboole Messages postés 3 Date d'inscription mardi 31 mai 2011 Statut Membre Dernière intervention 5 juin 2011
2 juin 2011 à 01:05
eskuzé moi le premier code ci dessus permet de saisir au clavier le texte ( malgré qu'il n'espace pas les mot exemple: papa et maman) s'affiche "papaemaman" probleme comment espacé et tout compter
voici celui qui est sensé compter les caracteres

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{


char NOM_FICH[] = "E:\\MOTS.TXT";
FILE *FICHIER;
/* Autres variables */
char CHAINE[50];
unsigned nbr=0;

FICHIER = fopen(NOM_FICH, "r");
if (!FICHIER)
{
printf("\aERREUR: Impossible d'ouvrir "
"le fichier: %s.\n", NOM_FICH);
exit(-1);
}

while (fgetc(FICHIER)!= EOF)
++nbr;

/* Fermeture du fichier */
fclose(FICHIER);
printf("Le fichier %s contient :\n", NOM_FICH);
printf("\t%d \t caractères et\n", (int)nbr);
getch();
}
0
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
6 juin 2011 à 10:45
Bonjour,

scanf() permet de lire une chaine jusqu'à la rencontre du premier caractère d'espacement (entrer,espace,tabulation...), il est donc normal que les espaces n'apparaissent pas. Utilise plutôt fgets pour saisir ton texte.

Pour compter les caractères du fichier tu peux aussi faire :

FICHIER = fopen(NOM_FICH, "r");
fseek(FICHIER,0L,SEEK_END);
nbr = ftell(FICHIER);
fclose(FICHIER);

Ça évite une boucle.
0
Rejoignez-nous