바이너리 데이터 read하는게 되다가 안되는데요...
글쓴이: emeraldrhapsody / 작성시간: 화, 2013/04/02 - 4:16오후
char *buff; int nread = 0; buff = (char *)malloc( sizeof(char) * size ); memset( buff, 0, size ); nread = read( fd, buff, size ); if ( nread < 0 ) { printf("read() fail.\n"); return -1; } printf("read buffer : %s\n", buff); 읽어들일 파일은 xml이구요. xml안에서 데이터 부분만 바이너리로 되어있습니다. 데이터부분은 <FileData> </FileData> 태그로 둘러쌓여있구요. 근데 버퍼크기에 상관없이 데이터 부분은 처음에 조금만 읽어들이고 뒤에는 전혀 읽지를 못하고... read를 못했으면 nread값이 잘못 되었을 텐데 size크기와도 같더군요... 부탁드립니다. 왜 못읽는지를 모르겠어요..ㅠㅠㅠ
Forums:
데이터가 읽어온 것은 어떻게
데이터가 읽어온 것은 어떻게 확인하셧나요?
printf("read buffer : %s\n", buff);
를 통해 확인했는데 데이터가 조금만 출력된다고 하면
buff 중간에 NULL 이 들어가서 출력이 지극히 정상적으로 된 케이스 같습니다
답변 감사드립니다..
일단은 xml data 태그 내부에 읽을 수 있는 데이터가 몇개 있고, 그 외에는 대부분이 알아볼수 없는 데이터들 뿐인데요. (NULL, 공백도 있구요.)
더 자세히 설명드리자면 안에 있는 데이터는 jpg파일 내용입니다.
lseek로 파일안에서 오프셋 변경시키면서 조금씩 read했을 시, 읽을 수 있는 데이터까지만 출력되고 그뒤에는 버퍼크기만큼 채워지지 않았는데도 출력이 안되고 있는 상황이죠..(지극히 정상이라고 답변해주신...)
제가 버퍼크기(=파일크기)만큼 읽어서 다시 파일에 쓰면 이제 그게 이미지파일로 열려야 하는데 깨졌다고 나와서 이렇게 질문드렸어요..파일크기는 정상으로 떨어집니다.
댓글 달기