web-dev-qa-db-fra.com

Existe-t-il un moyen pour que printf () imprime correctement un tableau (de flottants, par exemple)?

Je crois avoir lu attentivement toute la documentation de printf() mais je n'ai trouvé aucun moyen de l'imprimer, disons, les éléments d'un tableau de 10 éléments de float(s).

Par exemple, si j'ai

float[] foo = {1., 2., 3., ..., 10.};

Ensuite, je voudrais avoir une seule déclaration telle que

printf("what_do_I_put_here\n", foo);

Ce qui imprimerait quelque chose comme:

1. 2. 3. .... 10.

Y a-t-il un moyen de le faire dans Vanilla C?

21
lindelof

vous devez parcourir les éléments du tableau

float foo[] = {1, 2, 3, 10};
int i;
for (i=0;i < (sizeof (foo) /sizeof (foo[0]));i++) {
    printf("%lf\n",foo[i]);
}

ou créer une fonction qui renvoie snprintf empilé, puis l'imprimer avec

printf("%s\n",function_that_makes_pretty_output(foo))
26
jackdoe

Il n'y a pas de déclaration unique dans la langue qui dit "imprimer un tableau entier à l'écran". Chaque élément du tableau doit être imprimé à l'écran individuellement.

Mais ne vous inquiétez pas, les boucles sont là pour vous sauver !, Je suppose que votre question était uniquement de savoir s'il y avait un moyen et je suppose qu'une personne avec 5 000 répétitions sur SO n'a pas besoin pour voir un extrait de code pour savoir comment les boucles sont implémentées!

11
COD3BOY

Vous devez parcourir le tableau et printf () chaque élément:

for(int i=0;i<10;++i) {
  printf("%.2f ", foo[i]);
}

printf("\n");
4
ckruse

Je ne pense pas qu'il existe un moyen d'imprimer un tableau pour vous dans printf. La fonction "printf" n'a aucune idée de la longueur de votre tableau.

2
Louis

Vous devez faire une boucle:

for (int i = 0; i < sizeof(foo) / sizeof(float); ++i)
   printf("%f", foo[i]);
printf("\n");
2
Krizz

C n'est pas un langage de programmation orientée objet (POO). Vous ne pouvez donc pas utiliser de propriétés dans la POO. Par exemple. Il n'y a pas de propriété .length en C. Vous devez donc utiliser des boucles pour votre tâche.

0
Kusumsiri