gpt4 book ai didi

c - 不在 if 语句之外打印

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:47 25 4
gpt4 key购买 nike

我正在制作我自己的 make 版本。我允许通过命令行传递一些参数。

我正在分批处理。我现在正在设置文件名

我有以下代码

int main(int argc, char *argv[]) {
char *fileName = NULL;
char fileFlag[2];

strcpy(fileFlag, "-f");
printf("%s\n", fileFlag);
if (argc == 1) {
fileName = (char *) malloc(sizeof("Makefile"));
strcpy(fileName, "Makefile");
printf("One arg %s\n", fileName);
}
printf("\n%s", fileName);
return 0;
}

当它运行时,我得到以下输出。

-f
One arg Makefile

它不应该打印另一行吗?

最佳答案

第一个问题是

  strcpy(fileFlag, "-f");

fileFlag 是所需空间的一个元素,您需要有 3 个元素数组来存储 "-f" 以及终止 null。在这种情况下,根据 strcpy() 行为,

The strcpy function copies the string pointed to by s2 (including the terminating null character) into the array pointed to by s1. [...]

因此,包括空字符在内,源的大小为 3,目标也需要这样。否则,您将访问调用undefined behavior 的绑定(bind)内存。 .

也就是说,

关于c - 不在 if 语句之外打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39731058/

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