gpt4 book ai didi

c - 如何处理 argv 字符数组赋值?

转载 作者:太空狗 更新时间:2023-10-29 16:00:06 27 4
gpt4 key购买 nike

我发现了两种将命令行参数传递到字符数组的方法:

int main (int argc, char **argv)
{
const char *s1 = argv[0];
char s2[256];
strcpy(s2, argv[0]);

printf("s1: %s\ns2: %s\n\n", s1, s2);
}

在 AIX 系统上使用 IBM xlc 编译器编译返回

[MyPrompt]> ./a.out

s1: ./a.out

s2: ./a.out

哪个实现(s1 或 s2)是正确的? s1 很好,因为 argv[0] 可以是任意长度。 s2 要求 argv[0] 的长度 < 256 个字符。

我不明白 s1 应该如何/为什么工作。我认为在编译时应该需要 s1 的右侧,但我认为它是在运行时生成的。

最佳答案

s1 工作的原因是因为 argv[0] 的类型一个指针。您只是分配地址(而不是实际值),这是安全的。您没有执行任何类型的分配或转换。

我通常更喜欢第一个选项,因为您应该只读取参数变量。

关于c - 如何处理 argv 字符数组赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1214251/

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