提问人:Chillzy 提问时间:1/31/2023 最后编辑:Chillzy 更新时间:1/31/2023 访问量:91
我应该在这里使用什么格式说明符?
What format specifier should I use here?
问:
在这里得到这个代码来打印打开的文件的名称(如果你想知道的话,这是一个高度图),每次我尝试打印出来时,我都会收到格式警告,我应该使用哪种格式说明符?
unsigned char* data = stbi_load("textures/height.png", &width, &height, &nr_components, 0);
printf("Loaded file: %u\n", data);
答:
11赞
Yakov Galka
1/31/2023
#1
如果您的目标是打印加载数据的地址,那就是:%p
printf("Loaded file: %p\n", (void*)data);
如果要逐字节打印实际数据,则应遍历字节并使用(十进制)或(十六进制):%hhu
%hhx
printf("Loaded file:\n");
for(int i = 0; i < width*height*nr_components; ++i)
printf("%hhx ", data[i]);
printf("\n");
data
不包含文件的名称,因此,如果您只想打印名称,请打印您传递给的相同字符串:stbi_load
const char *filename = "textures/height.png";
unsigned char* data = stbi_load(filename, &width, &height, &nr_components, 0);
printf("Loaded file: %s\n", filename);
评论
0赞
chux - Reinstate Monica
1/31/2023
次要:为了更好地处理大文件,请使用:size_t
size_t n = (size_t)width*height*nr_components; for(size_t i = 0; i <n; ++i)
下一个:C 格式说明符的意义何在?
评论
unsigned char
unsigned char*
data
被定义为指向一个指针,据推测,它保存了unsigned char
unsigned char
stbi_load
不返回字符串。它返回位图数据。你不能像字符串一样打印它。文件的名称大概是 。textures/height.png