Compter le nombre d'espace
dordouf
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour tout le monde,
Je débute en programmation et j'ai besoin de vous.
Le problème, j'ai un fichier qui se nomme test.txt qui se trouve dans /toto/fichier , je dois compter le nombre d'espace dans ce fichier.
j'ai fait un petit programme qui m'affiche les caractères que je souhaite, mais quand je fais une condition sur l'espace ça plante / if (caract[i] == ""){ après j'incrémente i }.
J'ai lu qu'il fallait mettre le caractère ascii de l'espace, donc j'ai mis: if (caract[i] == 20){}
Ca compile mais ça marche pas trop.
Si vous voulez voir le code, dites le moi je le mettrai
Merci beaucoup
Je débute en programmation et j'ai besoin de vous.
Le problème, j'ai un fichier qui se nomme test.txt qui se trouve dans /toto/fichier , je dois compter le nombre d'espace dans ce fichier.
j'ai fait un petit programme qui m'affiche les caractères que je souhaite, mais quand je fais une condition sur l'espace ça plante / if (caract[i] == ""){ après j'incrémente i }.
J'ai lu qu'il fallait mettre le caractère ascii de l'espace, donc j'ai mis: if (caract[i] == 20){}
Ca compile mais ça marche pas trop.
Si vous voulez voir le code, dites le moi je le mettrai
Merci beaucoup
A voir également:
- Excel compter le nombre d'espace dans une cellule
- Espace insécable - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
5 réponses
Salut,
Oui ce serait plus simple que tu mettes ton code pour voir ce qui ne va pas.
Je pense qu'il te faut un autre entier que i pour compter le nombre d'espaces, enfin ça dépend de ton code.
Oui ce serait plus simple que tu mettes ton code pour voir ce qui ne va pas.
Je pense qu'il te faut un autre entier que i pour compter le nombre d'espaces, enfin ça dépend de ton code.
Merci de m'avoir répondu, voici mon code
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int fd = 0;
char ligne[200];
int nb_car_lus = 0;
int i = 0;
int count = 0;
fd = open ("/root/script_c/perso/test.txt",O_RDONLY);
if (fd > 0)
{
printf("Ouverture du fichier reussie \n\n");
}
do
{
nb_car_lus = read(fd,ligne,199);
i = i+1;
}
while (nb_car_lus > 0);
ligne[i]='\0';
i=0;
while (count != '\0')
{
if (ligne[count] == 20) // 20 espace en ASCII
{
i = i+1;
count = count + 1;
}
}
printf("\n\n\n Blancs : %d", i);
close(fd);
return(0);
}
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int fd = 0;
char ligne[200];
int nb_car_lus = 0;
int i = 0;
int count = 0;
fd = open ("/root/script_c/perso/test.txt",O_RDONLY);
if (fd > 0)
{
printf("Ouverture du fichier reussie \n\n");
}
do
{
nb_car_lus = read(fd,ligne,199);
i = i+1;
}
while (nb_car_lus > 0);
ligne[i]='\0';
i=0;
while (count != '\0')
{
if (ligne[count] == 20) // 20 espace en ASCII
{
i = i+1;
count = count + 1;
}
}
printf("\n\n\n Blancs : %d", i);
close(fd);
return(0);
}
Tu fait un split, puis tu compte le nombre d'index du tableau -1
Je ne fait pas de C, mais j'espére que d'autres t'aideront ^^
Je ne fait pas de C, mais j'espére que d'autres t'aideront ^^
Pourquoi ne pas utiliser des fonctions standards ?
Comme fopen (et non open)
Comme fread (ou mieux fgets) et non read.
Ca change pas mal de chose.
Pour le code ascii, tu peux te contenter de mettre ' ' (c'est plus intelligible)
do
{
nb_car_lus = read(fd,ligne,199);
i = i+1;
}
Il y aura seulement 1 boucle. Donc i vaudra 1.
Donc, tu ne gardes que le premier caractère.
Dans un premier temps, je te conseille de tout revoir :
fopen, fgets, fclose.
Ensuite, reposte ton nouveau code (en utilisant les balises "code" à droite du bouton souligné). Et on reverra :-).
Comme fopen (et non open)
Comme fread (ou mieux fgets) et non read.
Ca change pas mal de chose.
Pour le code ascii, tu peux te contenter de mettre ' ' (c'est plus intelligible)
do
{
nb_car_lus = read(fd,ligne,199);
i = i+1;
}
Il y aura seulement 1 boucle. Donc i vaudra 1.
Donc, tu ne gardes que le premier caractère.
Dans un premier temps, je te conseille de tout revoir :
fopen, fgets, fclose.
Ensuite, reposte ton nouveau code (en utilisant les balises "code" à droite du bouton souligné). Et on reverra :-).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
En plus des remarques de fiddy...
Ton test initial était mauvais car en faisant
Tu aurais dû écrire
Maintenant que tu essayes avec le code ASCII, tu te trompes encore. Le code de l'espace c'est 20... en hexa, soit 32 en décimal. tu peux faire
En plus des remarques de fiddy...
Ton test initial était mauvais car en faisant
if (caract[i] == "")tu comparais un caractère et une chaîne (vide, de surcroît !)
Tu aurais dû écrire
if (caract[i] == ' ')
Maintenant que tu essayes avec le code ASCII, tu te trompes encore. Le code de l'espace c'est 20... en hexa, soit 32 en décimal. tu peux faire
if (caract[i] == 0x20)ou
if (caract[i] == 32);