打印算法:当值[索引] = 0x00时,十六进制数组printf中断

时间:2018-07-23 07:04:10

标签: c arrays hex

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

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

输出:
1a345
1a345

注意:我可以按字符打印char,它可以工作,但是处理MB时速度太慢

1 个答案:

答案 0 :(得分:1)

您始终可以尝试使用fwrite来简单地将数据块写入文件或标准输出。但是请注意,写入stdout时不会显示零,因为cmd / terminal没有分配字符(据我所知)。

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

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