gpt4 book ai didi

C 字符串设置字符数组为 argv[1]

转载 作者:行者123 更新时间:2023-12-02 08:07:42 24 4
gpt4 key购买 nike

如果我有一个程序如下:

int main(int argc, char** argv) {
char s[32] = argv[1];
printf("entered char is %s\n", s);
}

为什么在编译期间出现错误:数组初始值设定项必须是初始值设定项列表或字符串文字?

argv[1] 不是一个字符串而且是不合法的

char s[32] = "A test string"

最佳答案

您不能使用这样的指针来初始化数组。相反,您必须在声明后复制字符串:

char s[32];
strcpy(s, argv[1]);

请注意,在执行此操作之前,您确实应该检查是否至少提供了一个参数(通过检查 argc)。另请注意,除非您想修改参数中提供的字符串,否则实际上没有必要保留该字符串的第二个副本。

哦,您可能想使用 strncpy 而不是普通的 strcpy,以避免可能的缓冲区溢出情况。请记住,如果源代码太长,strncpy 将不会终止字符串,因此您需要明确地执行此操作。

关于C 字符串设置字符数组为 argv[1],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50078812/

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