impression de plusieurs nombres entiers en même temps
Je me demandais si il ya une meilleure façon d'imprimer un tableau d'entiers en c;
Sur le moment, je fais un printf("%d" ,.. )
pour tous les int dans mon tableau.
Cependant cela provoque un appel système par int? (si ma compréhension est correcte).
Il serait préférable de convertir l'int tableau de chaîne de la mémoire tampon, puis imprimez le tampon dans un appel.
Je peux écrire le code si nécessaire.
T1. est-ce une bonne idée ou trop de tracas pour être en vaut la peine?
T2. Existe-il des bibliothèques qui mettent en œuvre une telle chose. (Ce que je google revient aux débutants tutoriels pour l'impression des entiers :s)
Modifier
La taille du tableau n'est pas connue avant de la main.
tableau est d'une taille dynamique.. donc cant coder en dur dans cette voie. J'ai mis à jour la question.
Vous posiez des questions sur le travail autour d'un "multiple" système de scénario d'appel. Pas de programmation de contournement, de l'OMI.
"si ma compréhension est correcte" -- 9 fois sur 10, quand les débutants dis cela, c'est faux.
tout à fait vrai.
OriginalL'auteur Osama Javed | 2013-04-29
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez
printf
, la sortie est déjà mis en mémoire tampon. Le système d'appel est fait uniquement lorsque vous "rincer" la mémoire tampon, soit explicitement en appelantfflush(stdout)
ou implicitement par l'impression\n
à une console. Par conséquent, la pré-mise en mémoire tampon sur le côté application permet de rendre votre code plus complexe, sans offrir de réelle différence de performance.Autant qu'une bibliothèque pour vous aider à écrire
int
s pour une chaîne de caractères, vous pouvez utiliser le même<stdio.h>
que vous utilisez déjà: allouer un tampon suffisamment grand pour contenir vos entiers, utilisezsprintf
au lieu deprintf
pour écrire, et ensuite appelerprintf
avec le contenu complet de la mémoire tampon. Ce serait vous aider à éviter les rougeurs sur\n
, si vous décidez de les utiliser comme séparateurs dans votre sortie.Le seul cas où
sprintf
serait utile si vous souhaitez utiliser\n
comme un séparateur, et vous avez voulu écrire dans un flux de sortie associé à la console (fichier de flux de sortie n'obtenez pas vidées sur\n
de toute façon).Vous avez omis sans tampon flux -- stdout peut être faite sans tampon, tout comme stderr est par défaut.
C'est une observation intéressante. Peut-on faire
stdout
barrettes de mémoire à partir de l'extérieur du programme, par exemple, par le biais de certains environnement de paramètres de configuration?Peut-être à certains de la mise en œuvre de quelque part, mais normalement stdio il définit la ligne de mise en mémoire tampon ou buffer, selon qu'il s'agit d'un terminal.
OriginalL'auteur dasblinkenlight
Non, il ne cause pas d'un système d'appel par
int
, sauf si vous définissezstdout
pour le mode sans mémoire tampon. C'est le point entier de stdio: pour le tampon de sortie pour vous afin que vous n'avez pas à le faire vous-même. Il ya une quantité minimale de supplémentaires appel surcharge pour laprintf
fonction elle-même. Si vous vous trouvez avoir besoin de plus de performances, vous pouvez essayer quelque chose comme:OriginalL'auteur R..