c - 为什么 argc 与 strlen(argv[i]) 不同?

标签 c segmentation-fault program-entry-point argv argc

当我使用 strlen(argv[i]) 而不是 argc 时,为什么我的代码会出现段错误?

#include<stdio.h>
#include<ctype.h>
#include<string.h>

int main(int argc , char* argv[])
{
    for(int i=0;i<strlen(argv[i]);i++)
    printf("%s\n",argv[i]);
    return 0;
}

输出为

./a.out
hello
world
Segmentation fault (core dumped)

最佳答案

使用argc:

int main(int argc , char* argv[])
{
    for(int i = 0; i < argc; i++)
        printf("%s\n", argv[i]);
    return 0;
}

有关更多信息,请参阅此问题的答案: What does int argc, char *argv[] mean?

关于c - 为什么 argc 与 strlen(argv[i]) 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079197/

相关文章:

c - 是否返回;在此功能中执行任何操作?

c - 使用 MPI_File_read_at 时出现段错误

c++ - 唯一指针的迭代 vector

java - 将方法放在与主类文件不同的单独类文件中

c - 主函数陷入循环而没有进入循环

c++ - 不使用这些字符的功能性 C++ 程序 : ';' . '{' , '}' , '\'

c - 全局声明的变量是外部变量还是静态变量?

c - 如何让字符设备驱动程序内核模块的 write 调用者进入休眠状态

c++ - C/C++ : How to figure out the chain of header files for a given definition?

c++ - Quicksort 出现段错误