【发布时间】:2021-06-10 05:55:36
【问题描述】:
我正在尝试在 C 中进行基本的文件 I/O 错误处理,但由于某种原因,我的代码在运行 exit() 时并没有立即退出,而是继续执行其余代码和段错误。
我已经注释了它应该退出的行。 为什么我的程序没有退出这里?
给定命令:(使用这个)
./test
正确的命令:
./test <Input file>
代码应该检查额外的关键字参数,如果没有,则会引发错误。
int main(int argc, char* argv[]){
FILE *fp;
int cur;
printf("%i", argc);
if (argc < 1){
perror("Syntax: ./test <Input File>");
exit(1);
}
// validate in_args are READABLE
for (int i=1; i<argc; i++){
fp = fopen(argv[i],"r");
if (fp == NULL){
fprintf(stderr, "%s: cannot open %s", argv[0], argv[i]);
exit(1);
}
}
// ================================ ^should exit here
// OPEN FILE - EXCEPTIONS
fp = fopen(argv[1], "r");
while ((cur=fgetc(fp))!=EOF){
printf("%c",cur);
}
if (fp){
fclose(fp);
}
}
【问题讨论】:
标签: segmentation-fault clang c99