C打印整个字符串变量(忽略\ 0终止)

时间:2014-03-08 17:38:20

标签: c variables printf null-terminated

一个例子说超过千言万语:

unsigned char *hello = (unsigned char*)malloc(STR_LEN * sizeof(unsigned char));
const char *str= "haha";
memcpy(hello, str, strlen(str) + 1);

如何打印整个hello - 变量的内容(printf("%s",..)仅尊重\0 - 终止前的部分,而不是所有STR_LEN个字符。

3 个答案:

答案 0 :(得分:5)

您可以使用fwrite写入未格式化的数据:

char buf[4] = { 1, 2 };

fwrite(buf, 1, 4, stdout);   // writes the bytes 1, 2, 0, 0

您可以使用fwrite(hello, 1, STR_LEN, stdout),但请注意,您不能阅读未初始化的数据(因此您应该使用calloc代替或以其他方式初始化数据)。

答案 1 :(得分:0)

你必须编写自己的for循环,从hello到hello + STR_LEN,并一次打印一个字符。

for (unsigned char *c = hello, e = hello +STR_LEN; c < e; ++c) {
    printf("%c", *c);
}

答案 2 :(得分:0)

int i;
for(i = 0; i < STR_LEN; i++) {
    putchar(hello[i]);
}