[C] l'inverse de atoi() ?

l'inverse de atoi() ? [C] - C - Programmation

Marsh Posté le 23-11-2004 à 21:54:01    

Comment je fais pour que mon entier (disons 4) devienne "4"
bref je cherche l'inverse de atoi()

Reply

Marsh Posté le 23-11-2004 à 21:54:01   

Reply

Marsh Posté le 23-11-2004 à 21:54:58    

snprintf ...

Reply

Marsh Posté le 23-11-2004 à 22:03:14    

euhhh merci

Reply

Marsh Posté le 23-11-2004 à 22:32:49    

Mais en fait je veux ecrire dans un fichier...
 
Je veux une concaténation de "azazaz " + entier + " zezeze"


Message édité par !cricri le 23-11-2004 à 22:33:00
Reply

Marsh Posté le 23-11-2004 à 22:35:17    

fprintf

Reply

Marsh Posté le 23-11-2004 à 22:50:37    

euh et je met quoi en premier argument a fprintf ?  
parceque moi j'ai un file descriptor apres mon open... et fprintf me reclame un FILE


Message édité par !cricri le 23-11-2004 à 22:51:02
Reply

Marsh Posté le 23-11-2004 à 22:56:37    

alors snprintf
 
tu es obligé d'utiliser les i/o posix ?

Reply

Marsh Posté le 23-11-2004 à 22:57:17    

oui

Reply

Marsh Posté le 23-11-2004 à 22:58:42    

1) Pourquoi tu n'utilises pas fopen ?
2) Tu peux avoir un FILE* à partir d'un file descriptor avec fdopen.
3) Sinon t'utilises pas fprintf
 
Petit retard à l'allumage :)


Message édité par blurk le 23-11-2004 à 22:59:22
Reply

Marsh Posté le 23-11-2004 à 23:02:13    

Dans la glibc tu as dprintf qui prend un file descriptor au lieur d'un FILE *. Mais ce n'est pas portable. Sinon tu peux associer un stream a ton file descriptor en faisant un fdopen(). Ou bien tu utilises directement fopen() au lieu de open().
 
Edit : grille pendant que je regardais les man


Message édité par matafan le 23-11-2004 à 23:03:28
Reply

Marsh Posté le 23-11-2004 à 23:02:13   

Reply

Marsh Posté le 25-11-2004 à 09:25:23    

char szBuffer[256];
int a=162;
 
sprintf(szBuffer "azazaz %d zezeze", a);
 
fprintf c'est our ecrire dans un fichier c'est pour ça qu'il te demande un FILE*
 
fprintf f = file
sprintf s = string
 


Message édité par spokup le 25-11-2004 à 09:27:24
Reply

Marsh Posté le 25-11-2004 à 10:01:26    

snprintf :o ca evite de se tirer une balle dans le pied :o

Reply

Marsh Posté le 25-11-2004 à 10:22:26    

On trouve parfois itoa, qui n'est pas standard, sur certains environnement Unix.
 
J'en ai trouvé cette implem sur le web:
 

Code :
  1. void itoa(int num, int base, char *numStr) {
  2.    char digitString[37] = "0123456789ABCDEFGHIJKLMNIOPQRSTUVWXYZ";
  3.    int quotient, lastDig, firstDig, temp;
  4.    quotient = num;
  5.    lastDig = 0;
  6.    if (num < 0)
  7.       quotient = -num;
  8.    else
  9.       quotient = num;
  10.    do {
  11.       numStr[lastDig] = digitString[quotient % base];
  12.       quotient = quotient / base;
  13.       lastDig++;
  14.    } while(quotient != 0);
  15.    if (num < 0) {
  16.       numStr[lastDig] = '-';
  17.       lastDig++;
  18.    }
  19.    numStr[lastDig] = 0;
  20.    firstDig = 0;
  21.    while (firstDig < lastDig) {
  22.       lastDig--;
  23.       temp = numStr[firstDig];
  24.       numStr[firstDig] = numStr[lastDig];
  25.       numStr[lastDig] = temp;
  26.       firstDig++;
  27.    }
  28. }


 
Mais il suffit de passer en parametre un argument numStr trop petit pour que ca merdouille, d'ou la reccomandation de ne pas l'utiliser, sauf si on veut s'amuser avec base exotique.
A+,


Message édité par gilou le 25-11-2004 à 10:26:04

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 25-11-2004 à 10:35:11    

spokup a écrit :

char szBuffer[256];
int a=162;
 
sprintf(szBuffer "azazaz %d zezeze", a);
 
fprintf c'est our ecrire dans un fichier c'est pour ça qu'il te demande un FILE*
 
fprintf f = file
sprintf s = string


 
OK merci j'ai compris
 
Merci a tous de vos reponses

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed