【问题标题】:Data to the next column skips (C)下一列的数据跳过 (C)
【发布时间】:2017-10-22 09:33:04
【问题描述】:

我正在编写代码,但在将数据表示为行和列的形式时遇到问题。该行从二进制文件中收集数据,在收集到 349 个数据后,它移动到下一列。但是,我遇到的问题是,我收集的数据跳到 4008 数据到 4008+349... 所以它跳过了从 350 到 4008 的数据。我需要从 350 到 350+349 的数据来填充下一列接下来的列也是如此。但是,我无法解决问题所在。请帮忙!

【问题讨论】:

    标签: c data-representation


    【解决方案1】:

    这个

     for (i = 0; i < DATAPERROW; i++) {
      for (int j = 0; j < NUMPLOTS; j++) {
       if (j*NUMPLOTS+i < bytes)
         printf ("%hd\t", su.shint[j*NUMPLOTS+i]);
      }
      printf("\n");
    }
    

    应该是

    for (i = 0; i < NUMPLOTS; i++) {
       for (int j = 0; j < DATAPERROW; j++) {
        if (i*DATAPERROW+j < bytes)
          printf ("%hd\t", su.shint[i*DATAPERROW+j]);
        }
      printf("\n");
    }
    

    【讨论】:

    • 谢谢!你能向我解释一下如何解决我的问题吗?
    • 当然。我们想要达到的,在你阅读的时候是一样的。你抓住第一行(在本例中为数字 0),然后通过它。之后,我们对第二行执行相同的操作。所以,这里内部循环穿过一行,但我们需要索引从行的开头开始。这是 i*DATAPERROW 编号。外环循环穿过这些线,所以这就是它走到外面的原因。我希望这种方式很清楚,但如果您还有其他问题,请随时提问。
    • 如果所有数据都包含在 i*DATAPERROW 中,+j 在这种情况下如何发挥作用?
    • 因为这种方式是按字节打印的,而且要走线。如果您看到“i*DATAPERROW+j”的值是 0,然后是 1,然后是 2、3、4 ... SIZE。你也可以这样写: for(int i=0;i
    猜你喜欢
    • 2013-02-18
    • 2012-10-14
    • 1970-01-01
    • 2019-12-08
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    相关资源
    最近更新 更多