Есть ли способ заставить printf () правильно распечатать массив (скажем, с плавающей точкой)? - PullRequest
21 голосов
/ 09 декабря 2011

Полагаю, я внимательно прочитал всю документацию printf(), но не смог найти способа распечатать ее, скажем, из элементов массива из 10 элементов float(s).

Например,если у меня есть

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

Тогда я хотел бы иметь одно утверждение, такое как

printf("what_do_I_put_here\n", foo);

, которое распечатало бы что-то вроде:

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

Есть ли способ сделать это в ванильном C?

Ответы [ 8 ]

25 голосов
/ 09 декабря 2011

вам нужно перебрать элементы массива

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

или создать функцию, которая возвращает сложенный snprintf, а затем распечатать его с помощью

printf("%s\n",function_that_makes_pretty_output(foo))
12 голосов
/ 09 декабря 2011

В языке нет единого утверждения, которое бы "печатало весь массив на экране".Каждый элемент в массиве должен быть напечатан на экране индивидуально.

Но не волнуйтесь, есть петли, чтобы спасти вас! Я думаю, ваш вопрос был только для того, чтобы узнать, есть лии я полагаю, что человеку с 5 тыс. повторений на SO не нужно видеть фрагмент кода, чтобы узнать, как реализованы циклы!

4 голосов
/ 09 декабря 2011

Вы должны пройти через массив и printf () каждого элемента:

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

printf("\n");
2 голосов
/ 09 декабря 2011

Вам нужно пойти на петлю:

for (int i = 0; i < sizeof(foo) / sizeof(float); ++i)
   printf("%f", foo[i]);
printf("\n");
2 голосов
/ 09 декабря 2011

Я не думаю, что есть способ напечатать массив для вас в printf.Функция "printf" не знает, как долго ваш массив.

0 голосов
/ 22 сентября 2017

Чтобы быть честным, все хорошо, но будет легко, если или будет более эффективно, если кто-то использует n временных чисел и показывает их в выходном формате. Поэтому предпочтение будет отдано хорошему варианту. Не предопределенная переменная массива позволяет пользователю определять и показывать результат. Как это ..

int main()
{
    int i,j,n,t;
int arry[100];
    scanf("%d",&n);
   for (i=0;i<n;i++)
   { scanf("%d",&t);
       arry[i]=t;
   }
for(j=0;j<n;j++)
    printf("%d",arry[j]);

return 0;
}
0 голосов
/ 04 февраля 2015

C не является языком объектно-ориентированного программирования (ООП). Таким образом, вы не можете использовать свойства в ООП. Например. В C. нет свойства .length, поэтому вам нужно использовать циклы для вашей задачи.

0 голосов
/ 17 декабря 2014

Вы можете распечатать его как строку:

printf("%s\n", foo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...