尝试从argv []读取文件时出现核心分段错误

时间:2019-07-24 21:42:20

标签: c command-line-arguments main

尝试从argv []读取文件时出现核心分段错误。我已经创建了文件,并且非常确定我正在尝试访问正确的内存地址。但是,当尝试打开文件时,我收到核心转储。

这是相关代码-

  for (int x=1;x<argc;x++){
  int buffsize=2056;
  char buff[buffsize];
  FILE* thefile;
  thefile=fopen("argv[x]","r");
  if (thefile == NULL) {
    fprintf(stderr, "%s cannot open file '%s'\n", argv[0], argv[1]);
    return 2;
  }

我要传递的命令行参数是

./words testfile.txt

,。/ words是已编译的代码。

我实际上找到了解决方案,它似乎是fopen中argv中的引号,为什么?

1 个答案:

答案 0 :(得分:3)

糟糕!我相信这条线

thefile=fopen("argv[x]","r");

应该是:

thefile=fopen(argv[x],"r");

这是因为"argv[x]"不是代码,而是字符串。那是什么?那是文件的路径吗?它没有编译为代码。它没有引用argv中的参数之一。

您可能还希望您的日志消息使用该文件名。请注意argv[x]

fprintf(stderr, "%s cannot open file '%s'\n", argv[0], argv[x]);