2012-04-08 9 views
-3

가능한 중복 버퍼를 전송 : 나는 1800 개 문자의 배열 세그먼트로 버퍼를 저장하려고
multidimensional arrays and transferring buffers다차원 배열

합니다. 모든 때 나는 버퍼를 전송할 수 있지만 때 각 새로운 버퍼를 인쇄하려고합니다. 나는 출력을 위해 null을 얻는다. 정확히 내가 뭘 잘못하고 있니?

2 차 치수 끝에 Null 종결 기호를 추가하기 위해 루프를이 코드로 변경했습니다. 이제는 출력이 null이라고 알려줍니다. 그러나 printf("%c")은 데이터가 전송되었다고 말합니다. 건조를 (자신을 반복하지 마십시오) 따르지

while(buf_pos < msg_size+1){ 
    if(buf_pos % 1800 == 0){ 
     msg_buff[key_num][cbuf_pos]='\0'; 
     key_num++; 
     cbuf_pos=0; 
     msg_buff[key_num][cbuf_pos]=buf[buf_pos]; 
    }else 
     msg_buff[key_num][cbuf_pos]=buf[buf_pos]; 

    printf("%c",msg_buff[key_num][cbuf_pos]); 
    cbuf_pos++; 
    buf_pos++; 
} 
+0

이제부터 –

답변

0

시도 원칙 : 수정 된 코드는 첫 번째 문자에 증가 방지 (만 테스트하는 것이

key_num = 0; 
cbuf_pos = 0; 
for (buf_pos = 0; buf_pos < msg_size+1; buf_pos++) 
{ 
    if (buf_pos % 1800 == 0 && buf_pos > 0) 
    { 
     msg_buff[key_num][cbuf_pos] = '\0'; 
     key_num++; 
     cbuf_pos = 0; 
    } 
    msg_buff[key_num][cbuf_pos] = buf[buf_pos]; 
    printf("%c", msg_buff[key_num][cbuf_pos]); 
    cbuf_pos++; 
} 

buf_pos > 0buf_pos % 1800은 피 제로 일 때 진단 인쇄없이 1800

에서 명백한 1,799 번 테스트, 나는 if 후 대신 두 개 또는 세의 한 줄을 써서 :

012 3,516,
msg_buff[key_num][cbuf_pos++] = buf[buf_pos]; 

당신은 사용하여도, 당신의 진단 인쇄를 향상시킬 수 (나는 그것이 너무 빨리 자세한 얻는다 당신을 부여 할 수 있습니다하지만)

printf("m[%d][%d] = %c\n", key_num, cbuf_pos, msg_buf[key_num][cbuf_pos]); 

이이 문제를 강조 할 수도 있습니다.

루프를 처음 통과 할 때 key_num == 1으로 건너 뛰지 않는 한 실제로 문제를 설명하지 않습니다.