Je viens d'écrire un code pour mon propre itoa (juste pour les nombres positifs) et j'essaie de le rendre le plus efficace possible, j'affiche la valeur depuis l'intérieur de la fonction, et ça marche, mais quand je retire la ligne printf de l'intérieur de la fonction, le code ne marche plus, est-ce que quelqu'un sait pourquoi?Problèmes d'implémentation d'une fonction itoa avec printf et sans
C'est là cela fonctionne
C'est là que ça ne fonctionne pas
Merci pour votre temps! ont une belle journée
Le code:
#include<stdio.h>
#define uint8_t unsigned char
#define uint16_t unsigned int
/*Prototipos de funciones*/
uint8_t *UART0_itoa(uint16_t number, uint8_t base);
/*Función principal*/
void main(){
uint8_t *cadena;
cadena = UART0_itoa(255, 16);
printf("The String in main: %s\n",cadena);
}
/*Declaración de funciones*/
uint8_t *UART0_itoa(uint16_t number, uint8_t base){
uint8_t *aux;
*aux = '\0';
while(number){
*--aux = (number%base>9)?(number%base)+'7':(number%base)+'0';
number/=base;
}
//printf("The String in the function: %s\n",aux);
return aux;
}
'aux' est un pointeur. Il ne pointe nulle part ailleurs; vous n'avez pas affecté (ou initialisé avec) aucune valeur. '* aux = '\ 0';' invoque un comportement indéfini. – pmg
'uint8_t * aux; * aux = '\ 0'; 'mais vous n'avez pas initialisé' aux'. –
J'essaie uint8_t * aux = NULL; puis * aux = '\ 0'; mais ne fonctionne toujours pas, existe-t-il un autre moyen? – christianMontero