c-printing algo:当值[index]=0x00时,十六进制数组printf中断



我想打印可以包含任何值的大数组,当0x00出现时,printf停止打印剩余字符。

int main(void) {
// your code goes here
char string[10]={0x31, 'a', 0x33,0x34, 0x35, 0x00,0x39, 0x40, 0x42,''};
printf("%.*sn", 5, string);
printf("%.*sn", 10, string);
return 0;
}

输出:
1a345
1a345

注意:我可以逐个字符打印,它很有效,但在处理MBs 时太慢了

您总是可以尝试使用fwrite来简单地将数据块写入文件或stdout。但请注意,当写入stdout时,零将不会显示,因为cmd/terminal没有指定字符(据我所知(。

fwrite (string , sizeof(char), sizeof(string), stdout);

如果您写入文件,数据(甚至是零(应该打印到您的文件中并存储,这样,如果您希望以后重用它,这就不会成为问题。

最新更新