【发布时间】:2019-12-03 02:55:41
【问题描述】:
我在尝试从 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中的引号,这是为什么呢?
【问题讨论】:
-
你是通过命令行传递的吗?你能发布命令行参数吗?
-
Debug 101:文件打开失败,所以首先要做的是
printfopen前一行的文件名,看看是哪个文件失败了。
标签: c command-line-arguments main