gpt4 book ai didi

c - argc/argv 影响数组中的空字节?

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:00 27 4
gpt4 key购买 nike

为什么会出现以下情况:

#include <stdio.h>

int main(int argc, char *argv[])
{
char array[3] = {'1', '2', '3'};
printf("%s\n", array);

return 0;
}

按预期生成 1238À§Wˇ(“123”+ 一些随机字符),而相同的代码具有:

int main(void)

代替 argcargv 产生:123(尽管空字节没有空间)。

为什么 array 中空字节的空间不足与 void 似乎无关紧要?

最佳答案

您没有提供字符串结尾 (EOS) 零字节,因此 printf 一直运行直到 [恰好] 找到一个(即垃圾字符)。

以下任何一个都可以:

char array[4] = { '1', '2', '3', '\0' };
char array[4] = { '1', '2', '3' };
char array[4] = "123";
char array[] = { '1', '2', '3', '\0' };
char array[] = "123";
char *array = "123";

关于c - argc/argv 影响数组中的空字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34733339/

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