【问题标题】:How can I printf first in columns then in lines?如何先在列中打印,然后在行中打印?
【发布时间】:2015-11-13 08:42:03
【问题描述】:

也许这个问题看起来很愚蠢......我想打印一个以行和列格式化的数据集。到目前为止我知道程序

for(i=0;i<number_of_rows;i++)
{
for(j=0;j<number_of_columns;j++)
    fprintf(file,"%g\t",array[i][j]);
fprintf(file,"\n");
}

这段代码的本质是先填充行,然后填充列。我有由列创建的数据集。因此,我想在传递到下一列之前填写每一列。为了制作正确的二维数组,我在运行时之前不知道输出数据的长度。我需要先打印一整列,然后再打印另一列。我怎样才能做到这一点?

【问题讨论】:

  • 只为列制作外循环,为行制作内循环。
  • 您必须从每个数据集中获取第一项,并将它们作为一行打印出来。然后从每个数据集中获取第二个项目,等等。或者你必须用固定长度的行填充一个文件,然后像疯了一样在文件中fseek。数据集有多大?它们不适合记忆吗?
  • 我通过为每个数据集运行不同的文件来计算。这可以更轻松地管理

标签: c printf multiple-columns


【解决方案1】:

我需要先打印一整列,然后再打印另一列。我该怎么做?

这将涉及附加到先前打印的行。而且,您可能知道,将内容添加到文件中涉及重写文件的整个其余部分。您可能会猜到这将是非常低效且难以实现的。

在运行之前我不知道输出数据的长度以便制作一个合适的二维数组

如果您的问题是数据的长度,那么我假设 正确的二维数组意味着您打算将列的每个单元格填充为相同的宽度。

在这种情况下,我建议不要在先写专栏的想法上浪费时间。相反,在运行时计算宽度。首先将sprintf 转换为字符串矩阵并计算每个单元格的长度。然后使用计算的长度打印字符串矩阵。

【讨论】:

  • 您的评论很有用,但我什至无法预测数组的长度。它是关于寻根功能的。我基本上需要将写入指针移动到下一个选项卡
  • @DimitrisPeponis 你肯定知道 runtime 时数组的维度。您问题中的代码甚至在循环中使用它们。
猜你喜欢
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
相关资源
最近更新 更多