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



我在尝试从 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 中的引号,这是为什么?

哎呀!我相信这条线

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]);

相关内容

  • 没有找到相关文章

最新更新