0

一个例子说了一千多个单词:

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

如何打印整个hello-variable 的内容(printf("%s",..)只尊重\0-termination 之前的部分,而不是所有STR_LEN字符)。

4

3 回答 3

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的数据(因此您应该改用或以其他方式初始化数据)。

于 2014-03-08T17:41:44.007 回答
0

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

for (unsigned char *c = hello, e = hello +STR_LEN; c < e; ++c) {
    printf("%c", *c);
}
于 2014-03-08T17:41:37.637 回答
0
int i;
for(i = 0; i < STR_LEN; i++) {
    putchar(hello[i]);
}
于 2014-03-08T17:41:51.997 回答