2017-10-22 4 views
0

私はコードを作成していますが、データを行と列の形式で表す問題があります。行はバイナリ・ファイルからデータを収集し、349のデータが収集された後、次の列に移動します。しかし、私が遭遇している問題は、私が集めたデータが4008のデータを4008 + 349にスキップするので、350から4008までのデータをスキップします。次の列を埋めるために350から350 + 349までのデータが必要です次の列についても同様です。しかし、私はどこに問題があるのか​​をトラブルシューティングできませんでした。助けてください!次の列へのデータスキップ(C)

答えて

2

これは

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

感謝する必要があります!私が持っていたものを修正する方法を私に説明できますか? – hphys

+0

達成したいことは、読んだときと同じことです。最初の行(この場合は数字0)をつかんでそれを調べます。その後、2行目と同じことをします。 ここで、内側のループは線を通っていますが、行の先頭から開始する必要があります。これはi * DATAPERROWの番号です。 外側のループが線をループしているので、外側に出ています。 私はそれがこのようにはっきりしていることを願っていますが、さらなる質問があれば、お気軽にお問い合わせください。 –

+0

すべてのデータがi * DATAPERROWに含まれている場合、+ jはこの状況でどのように動作しますか? – hphys