不要在空终止处停止 printf (\0)

Don't stop printf at null termination (\0)

printf 在遇到第一个 \0 时停止打印。

有没有办法强制它继续,例如,如果我的字符串在 \0 之后包含更多字符。

如果您知道字符串的长度为 n 个字符,则可以使用 fwrite:

输出它
if (n && fwrite(str, 1, n, stdout) != n) {
    /* Error handling. */
}

不,不直接。

你可以做的就是把它放在一个循环中

#include <stdio.h>

int main(void) {
    char test[] = "one[=10=]two[=10=]three[=10=]four[=10=]"; /* double NUL to terminate data */
    char *ptr = test;
    do {
        ptr += printf("%s\n", ptr); /* add string size + 1 (extra 1 from '\n') */
    } while (*ptr);
    return 0;
}

如果您知道要显示的空终止字符串的数量:

size_t str_count; // Count of '[=10=]' in my_str
const char * my_str; // Points on contiguous Null terminated strings

for(size_t i=0; i<str_count; i++)
{
    printf("%s", my_str);
    my_str += 1 + strlen(my_str); // "+1" to skip the `[=10=]`
}

您可以使用 putchar:

char *buffer = "1234[=10=]ABCD[=10=]hello";
char *s = buffer;
int n = 6;

while (n--)
    putchar(*s++);