有没有办法让printf()正确打印出一个数组(浮点数,比方说)?

时间:2011-12-09 08:10:43

标签: c printf

我相信我已经仔细阅读了整个printf()文档,但找不到任何方法可以打印出来,例如,float(s)的10个元素数组的元素。

,例如,如果我有

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

然后我想要一个单一的陈述,如

printf("what_do_I_put_here\n", foo);

这将打印出以下内容:

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

有没有办法在香草C中做到这一点?

8 个答案:

答案 0 :(得分:25)

你需要通过数组的元素进行迭代

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))

答案 1 :(得分:12)

  

语言中没有单一的声明说“将整个数组打印到屏幕上”。必须将数组中的每个元素单独打印到屏幕上。

但不要担心,循环是为了拯救你!,我想你的问题只是要知道是否有办法,我想在SO上有5k代表的人不需要看到代码片段到知道如何实现循环!

答案 2 :(得分:4)

你必须遍历数组并printf()每个元素:

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

printf("\n");

答案 3 :(得分:2)

我认为没有办法在printf中为你打印数组。 “printf”函数不知道你的数组有多长。

答案 4 :(得分:2)

你需要循环:

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

答案 5 :(得分:0)

C不是面向对象编程(OOP)语言。所以你不能在OOP中使用属性。例如。 C中没有.length属性。所以你需要为你的任务使用循环。

答案 6 :(得分:-2)

要诚实一切都很好但是如果有人使用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;
}

答案 7 :(得分:-4)

你可以把它打印成字符串:

printf("%s\n", foo);