En lisant K & R, je suis tombé sur l'entier à la chaîne fonction. Je lui ai donné une lecture rapide, et j'ai décidé de l'implémenter moi-même, mais au lieu d'imprimer, il met à jour un tableau de caractères.Quelques questions concernant un entier C à la fonction de chaîne
Voici ce que j'ai
void inttostr(int number, char str[]) {
static int i;
if (number/10) {
inttostr(number/10, str);
}
str[i++] = number % 10 + '0';
}
Il semblait fonctionner pour les quelques entiers que je lui ai donné, mais j'ai quelques questions.
- Je n'ai pas inclus explicitement l'octet NUL
\0
à la fin, alors pourquoi le travail chaîne bien lors de l'impression avecprintf("%s\n", str);
? - Je ne pense pas que je suis très bon à en pensant récursivement. Quand j'essaie de parcourir le programme dans mon esprit, je perds la trace de ce qui attend encore l'exécution. Y a-t-il une meilleure façon de voir ce qui se passe en interne, pour m'aider à apprendre?
- D'autres suggestions sur le code?
J'utilise Xcode.
Ceci est pas devoir. Je suis en train d'apprendre.
Merci!
Ne serait-il pas plus facile d'utiliser itoa()? –
@Alexander Si c'est quelque chose dans une bibliothèque standard, alors vous avez probablement raison. Cependant, j'apprends en faisant, donc appeler la fonction de bibliothèque ne me laissera pas apprendre comment cela peut fonctionner intérieurement. – alex
'itoa' n'est pas standard, et il semble que ce soit un exercice éducatif. –