char* full_string;
int size;
FILE* f = fopen(filename,"r");
fseek(f,0,SEEK_END);
size = ftell(f);
fseek(f,0,SEEK_SET);
full_string = malloc(size+1);
fread(full_string,1,size,f);
fclose(f);
full_string[size] = '\0';
위 코드를 사용하여 "full_string"이라는 버퍼에 파일의 내용을 읽으려고하지만 gdb를 단계별로 실행하면 다음 내용이 저장됩니다. 대신 "full_string" 버퍼에 이미지 파일 내용을 읽는 중
full_string = 0xa46df0 "\377\330\377", <incomplete sequence \340>
내가 C에서 완전 초보, 그래서 내가 어떻게이 문제를 해석하는 아무 생각이 없습니다. 내가 읽고있는 파일이 이미지 파일이라는 것을 언급 할 가치가있다. 이러한 이미지의 대부분은 크기가 50,000 바이트 이상입니다. 어떤 도움이라도 대단히 감사하겠습니다!
'full_string'에서 무엇을 기대합니까? 디버거가 문자 스트링으로 해석하려고 시도했지만 이미지가 문자열이 아닙니다. 따라서 * 코드 *가 좋을 수도 있지만 * 디버거 *는 혼란 스러울 수 있습니다. –
@ScottHunter 또는 그냥 거대한 문자열을 표시 할 수 없습니다. – fvu
"문자열"은 0으로 끝나며'char *'(또는'char * '로 붕괴되는'char []' 사물에 전달되었을 때). 매우 특정한 형식이 아닌 다른 것을 넣으면 문자열을 만들지 않고 일련의 바이트를 만듭니다. GDB는 문자열을 만들지 않는다는 것을 모릅니다. 어떻게 그럴 수 있니? 그래서 문자열이라고 가정하고 문자열로 해석 할 때 오류가 발생합니다. 문자열이 아니기 때문입니다. –