gpt4 book ai didi

c - 打印包含多个 NUL 的整个字符串

转载 作者:行者123 更新时间:2023-11-30 15:30:03 26 4
gpt4 key购买 nike

 char *string1;                  
int i;
string1=(char*)malloc(14*sizeof(char));
for(i=0;i<10;i++)
string1[i]=i+65;
string1[10]=0;
string1[11]=65;
string1[12]=67;
str[13]=0;
printf("%s",string1);

但输出直到第一个 NUL 为止。是否可以在不使用循环的情况下将其打印到最后一个 NUL?

最佳答案

只有当您知道嵌入的空值存在并且通过某种方式知道数据有多长时,您才能写入嵌入的空值。字符串正式定义为以(第一个)空字节结尾的字节序列。因此,您要写入的内容不是标准定义的字符串。但是,假设使用 C99 或 C11 编译器(以便可以在 i 循环中声明 for):

char *string1 = (char *)malloc(14 * sizeof(char));
for (int i = 0; i < 10; i++)
string1[i] = i + 65;
string1[10] = 0;
string1[11] = 65;
string1[12] = 67;
str[13] = 0;
if (fwrite(string1, sizeof(char), 13, stdout) != 13)
…deal with short write (error)…

如果您无法使用 C89 编译器,请定义 int i正如您在问题中所做的那样,在循环之外。

有些人会因为你在 malloc() 的通话中包含 Actor 而责备你。 。在标准 C 中没有必要(除非您在异常不寻常的环境中工作,否则您不会有预标准 C 编译器),但只要您设置了编译器选项,它就不会造成任何损害这样,如果您不小心忘记 #include <stdlib.h> ,您将会被告知。这应该在符合标准的模式下使用 C99 或 C11 编译器自动发生。

关于c - 打印包含多个 NUL 的整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25853793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com