2017-03-14 1 views
-2

여기서 나의 주요 질문은 printf()의 사용 및 형식 지정자와 관련이 있습니다. 정수가 들어있는 100 개의 요소가 배열되어 있는데, 대부분이 현재 0으로 초기화되어 있습니다. 내가 그렇게 같은 형식 10 × 10 블록에 화면에 내용을 덤프 싶습니다 내 현재 코드와배열의 메모리 내용을 덤프

 0  1  2  3  4  5 ... 
0 +0000 +0000 +0000 +0000 +0000 +0000 
1 +0000 +0000 ... 
2 ... 
3 
... 

, 내 서식이 조금 꺼져 -

0  1  2  3  4  5  6  7  8  9  
    +1103 +4309 +1234 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
1 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
2 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
3 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
4 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
5 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
6 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
7 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
8 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 
9 

현재 (관련) 코드 :

void dump (int *dumpMemory, int SIZE) { 
    int i = 0; 
    for (i; i < 10; ++i) {       // Output 1-10 at top row of dump 
     printf("\t%d", i); 
    } 
    puts(""); 
    for (i = 0; i < SIZE; i++) { 
     printf("\t%+05d", dumpMemory[i]); 

     if ((i % 10) == 9) { 
      printf("\n%d", (i/10)); 
     } 
    } 
    puts(""); 
} 

왼쪽 색인은 한 지점 아래로 이동되었으므로 화면에 인쇄 할 때 위치가 올바르게 표시되지 않습니다.

+0

당신은 항목 이후에 줄 바꿈을합니다. 그런 다음 루프 이후에 계수 0을 확인합니다. –

+0

위에서 출력을 업데이트하여 작업을 9와 동일하게 변경했습니다. 그런 다음 인덱스를 한 지점 아래로 이동시키는 이유에 대해 다소 혼란 스럽습니다. –

답변

0

대부분의 경우 올바른 장소에 인쇄하는 것이 좋습니다. 제목 줄이 좋습니다. i % 10 == 0 때 항목을 인쇄하기 전에 줄 접두사를 인쇄해야합니다. 항목을 인쇄 한 후에 줄 바꿈을 인쇄해야 할 때 i % 10 == 9; 루프 이후에 i % 10 != 0 인 경우 줄 바꿈을 인쇄하여 줄 번호를 끝내야합니다. 그런 다음 덤프 후에 빈 행을 넣기 위해 다른 행을 추가할지 여부는 선택 사항입니다. 계수가 0이 9 아닌 루프가 열 아홉 항목으로 끝나지 않는 경우에만 여분의 줄 바꿈을 할 수 있습니다 곳

void dump(int *data, int size) 
{ 
    for (int i = 0; i < 10; ++i) // Output headings 0..9 
     printf("\t%d", i); 
    putchar('\n'); 

    for (int i = 0; i < size; i++) 
    { 
     if (i % 10 == 0) 
      printf("%d", i/10); // Consider outputting i? 
     printf("\t%+05d", data[i]); 
     if (i % 10 == 9) 
      putchar('\n'); 
    } 
    if (size % 10 != 0) 
     putchar('\n'); // Finish current/partial line 
    putchar('\n');  // Optional blank line 
}