printf在第一个\ 0遇到停止打印。
有没有办法强制它继续,例如,如果我的字符串在\ 0之后包含更多字符。
答案 0 :(得分:6)
如果您知道字符串的长度为n
个字符,则可以使用fwrite
输出:
if (n && fwrite(str, 1, n, stdout) != n) {
/* Error handling. */
}
答案 1 :(得分:3)
不,不是直接。
你能做的就是把它放在循环中
#include <stdio.h>
int main(void) {
char test[] = "one\0two\0three\0four\0"; /* 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;
}
答案 2 :(得分:1)
您可以使用putchar
:
char *buffer = "1234\0ABCD\0hello";
char *s = buffer;
int n = 6;
while (n--)
putchar(*s++);
答案 3 :(得分:0)
如果您知道要显示的空终止字符串的计数:
size_t str_count; // Count of '\0' 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 `\0`
}