2017-10-22 1 views
0

코드를 작성하고 있는데 행과 열의 형태로 데이터를 나타내는 데 문제가 있습니다. 이 행은 2 진 파일에서 데이터를 수집하고 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)을 잡고 그것을 통과합니다. 그 후 두 번째 줄에서도 똑같이 처리합니다. 그래서, 내부 루프는 라인을 통과하지만, 라인의 시작 부분부터 시작하는 인덱스가 필요합니다. 이것은 i * DATAPERROW 번호입니다. 바깥 쪽 루프가 선을 따라 루프하므로 외부로 나가는 이유입니다. 이 방법이 분명하기를 바랍니다. 그러나 추가 질문이 있으면 언제든지 물어보십시오. –

+0

모든 데이터가 i * DATAPERROW에 포함되어 있다면이 상황에서 + j가 어떻게 작동합니까? – hphys