gpt4 book ai didi

c - argv 是字符数组时怎么会是字符串数组?

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

为什么 argv[0] 不打印文件名的第一个字符而不是整个文件名字符串?

如果argv是指向字符数组的指针,那么不应该使用带有字符的[n]结果来访问它吗?如果它是一个字符串(如 printf(argv[n]) 所建议的那样)那么为什么 argv[0][0] 不让我得到文件名的第一个字符(编译但启动时崩溃)?

int main(int argc, char **argv){

printf(argv[0][0]);

while (1){}
return 0;
}

最佳答案

您的代码表现出未定义的行为,因为您将 char 传递给需要指针的函数。

要打印单个字符,您有以下选项,

  • fputc(argv[0][0], stdout);
  • putchar(argv[0][0]);//实际上与上面相同
  • printf("%c\n", argv[0][0]);

您可以添加更多 printf() 变体。

代码崩溃的原因是 printf(argv[0][0]); 是未定义的行为,因为该函数将尝试取消引用指针,但您传递了单个字符和值这样的字符将被解释为内存地址。

您确实需要启用编译器警告。

关于c - argv 是字符数组时怎么会是字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51786040/

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