Recherce Fonction C

Résolu/Fermé
Damien - 23 févr. 2007 à 15:35
 assia - 4 avril 2007 à 20:59
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

8 réponses

Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
23 févr. 2007 à 15:50
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
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
sprintf + strlen ?
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
23 févr. 2007 à 16:36
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
23 févr. 2007 à 16:30
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
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
23 févr. 2007 à 17:26
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
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 lundi 29 janvier 2007 Statut Membre Dernière intervention 10 février 2010 181
23 févr. 2007 à 19:51
Salut,

peut-être qch comme ça ?

int nb, nbChiffres;

if( nb ) nbChiffres = log10(abs(nb)) + 1;
else nbChiffres = 1;
0
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
24 févr. 2007 à 03:22
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
kkooooooooooo
0