带有fread的分段错误(核心转储)案例

nin*_*ies 0 c segmentation-fault

有些人请告诉我为什么这段代码会导致这样的错误?

unsigned char buffer;
fread(&buffer,1,1,image_ptr);
printf("%s ",buffer);
Run Code Online (Sandbox Code Playgroud)

图像为8位灰度.谢谢.

Car*_*rum 5

%s是打印字符串的格式说明符,但buffer不是字符串.这会导致未定义的行为.您想要%c或可能%u%x取决于您想要的输出.


Kni*_*nug 5

%s说明符是字符串,即一个char *,你传递一个char,这是不一样的.

使用%cprintf打印buffer:

printf("%c ", buffer);
Run Code Online (Sandbox Code Playgroud)