Recherce Fonction C

Résolu
Damien -  
 assia -
Bonjour à tous je suis actuellement en BTS IG et je travail sur un programme personnel je voudrais savoir si il existe une fonction pour renvoyer le nombre de chiffre d'un entier?
c'est à dire sui je saisi 1234 que la fonction me renvoi 4

Merci d'avance
A voir également:

8 réponses

Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Salut,

Il te suffit de saisir ton nombre en tant que chaine de caractères (%s) au lieu de valeur (%i). Il te suffit alors d'afficher un strlen(ton_nombre_en_%s).
0
Damien
 
Le probleme c'est que je doit utiliser les nombre que je recupère pour des calculs donc je ne peux pas utiliser la fonction strlen.
0
debutant
 
sprintf + strlen ?
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
J'avoue, pas mieux :(

J'ai l'air fin avec mon algo récursif par modulo maintenant :(
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Tu peux le faire manuellement mais c'est assez lourd :

Avec une fonction récursive qui fait des modulo sur des tranches de 10,100,1000 etc. Récursive parce qu'elle doit s'appeler elle-même si le résultat est supérieur a 0 (ce qui veut dire que cette tranche là existe). Valeur de retour : la position de la tranche qui équivaut à ce que tu recherches
0
Damien
 
Désolé mais etant vraiment débutant dans la programmation C il faudrait m'expliquer l'utilisation de la fonction sprintf().
Désolé Stupflip mais c'est sur que ta solution est bien trop compliqué pour moi enfin merci quand même.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Alors sprintf fait la même chose que printf, à la différence près qu'il le rentre dans un buffer.

En pratique tu auras un truc genre :

int valeur_chiffree;
char valeur_char[TAILLE];

valeur_chiffree=1234;

sprintf(valeur_char,"%i",valeur_chiffree);
printf("\nTaille : %i\n",strlen(valeur_char));
0
assia
 
bjr stupflip apres que j'ai lu vous messages je te trouve que tu es bien maitriser le language c moi j'ai un projet en c et je ss bloque tu peut me donner l'aide pour sortir de mon probleme
mon msn est assia_123456_@hotmail.com ajout moi pour discuter si tu veut biensur et merci ds tt les cas @+
0
Herr Dr von Apfelstrudel Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   182
 
Salut,

peut-être qch comme ça ?

int nb, nbChiffres;

if( nb ) nbChiffres = log10(abs(nb)) + 1;
else nbChiffres = 1;
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Attention au fait que tout ce qui a été dit avant n'est vrai que s'il s'agit d'entiers positifs. Pour compter le nombre de chiffres on peut faire ainsi :
#include <string.h>
#include <ctype.h>
#include <stdio.h>

unsigned int nb_digits(double d){
  unsigned int i,res=0,n;
  char buffer[255];
  unsigned int i,n;
  sprintf(buffer,"%lf",d);
  n = strlen(buffer);
  for(i=0;i<n;++i){
    if(isdigit(buffer[i])) ++res;
  }
  return res;
}
0
bikop
 
kkooooooooooo
0