Bonjour,
je cherche un equivalent de la fonction gcount en C.
Merci pour votre aide ++
Bonjour,
je cherche un equivalent de la fonction gcount en C.
Merci pour votre aide ++
Et elle fait quoi cette fonction ? T'est un peu light, y'a pas tout le monde qui connais !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
nan mais laisse, c'est a propos du topic "std:: programme c", ce sont des fonctions définies dans son code, et on lui a dit que c'était pas standard qu'il fallait lire les sources, mais visiblement il a pas saisi
Juste après un appel getline, la fonction-membre gcount() permet de savoir quelle est la longueur de la chaine de caractères effectivement lue.
Mais apparement cette fonction vient du C++ et n'est pas compatible en C.
Bin logique, ce qui viens du C peut être dans une certaines mesure compatible avec le C++ mais l'inverse tu peux oublier, il faut alors créer tes propres routines ou utiliser des bibliothèques comme GLib par exemple pour certains cas !Envoyé par gy0m76
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Donc, sauf erreur de ma part :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char saisie[20]; fgets (saisie, sizeof saisie, stdin); /* nb est le nombre de caractères effectivement lus */ int nb = strlen(saisie);
Oui presque, il faut juste déterminer si le caractère \n est présent (ce qui indique une chaîne complète avec un retour chariot (saisie validée par l'utilisateur en appuyant sur Enter) et le remplacer par un zéro de fin de chaîne.Envoyé par zooro
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 text = gets (text); // text de type char* correctement initialisé int n = strlen (text);
Il faut jamais utiliser gets mais plutôt fgets ... à garder ca en mémoireEnvoyé par Fabllot
![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Certes, mais du coup la question n'a plus raison d'être puisque qu'on indique le nombre de caractère à lire dans les paramètres de fgets...
Pardon, le maximum de caractères à lire ... Mea Culpa...
En fait dans mon cas, je lit le nombre de pixel d'une image et ensuite je veut comparer si cette valeur est différente de 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fread(buf, 4096, 4096, bmp); if (gcount(bmp) != 0) ....
On ne connais "jamais" par avance le nombre d'octets lus, même avec une saisie par stdin ... mais on indique un maximum à fgets pour le buffer puis après tu peux éventuellement déterminer la taille réelle de la chaîne !Envoyé par Fabllot
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
gets(), c'est le Diable.Envoyé par Fabllot
![]()
Vade retro, gets() !Envoyé par Emmanuel Delahaye
![]()
C'est ça ?Envoyé par gy0m76
http://www.cppreference.com/cppio/gcount.html
- Si tu utlises fgetc() et que tu ne retournes pas EOF, gcount vaut 1
- Si tu utilises fread() et que la valeur retournée est égale au nombre d'éléments passés en paramètre (lire la doc), gcount vaut la valeur retournée x la taille d'un élément.
- Si tu utilises fgets() et que celui ci n'a pas retourné NULL, gcount est la longueur de la chaine lue (strlen).
Va falloir apprendre à être plus précis sur ce que tu veux et pourquoi tu le veux, ca nous évitera de taper 50 posts avant que tu nous dise la vraie raison !Envoyé par gy0m76
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
J'y penserait pour la prochaine fois, merci a tous pour votre aide en tout cas.
Voila ce que j'ai modifier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int i; i = fread(buf, 4096, 4096, bmp); if (i != 0)
Envoyé par gy0m76
J'aurais mis
D'autre part, buf doit faire 16 Mbytes, c'est du sérieux...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (i != 4096) { /* erreur de lecture */
Partager