【发布时间】:2019-05-11 19:54:11
【问题描述】:
所以,我试图打开 2 个文件,每个文件都有 3 行和 2 个数字。编译后,我在终端中运行它(我使用的是 Ubuntu ftr)作为
./a.out a.txt+b.txt
它什么也不返回。当我注释掉代码的“检查它是否正确打开”部分时,它只会吐出一些数字并打印出错误“分段错误(核心转储)”。我真的不知道我做错了什么,因为这段代码对我的朋友来说运行良好。我在下面提供了令人讨厌的代码。 (其余代码应该对数字运行操作,这就是文件名之间有加号的原因。)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char** argv){
FILE* fa = fopen(argv[1],"r"); if(!fa)exit(1);
FILE* fb = fopen(argv[3],"r"); if(!fb)exit(1);
int k;
double A[3];
double Ag[3];
double B[3];
double Bg[3];
for (k=0;k<3;k++){
fscanf(fa, "%lf %lf", &A[k], &Ag[k]);
fscanf(fa, "%lf %lf", &B[k], &Bg[k]);
}
for (k=0;k<3;k++){
printf("%lf %lf\n", A[k], Ag[k]);
printf("%lf %lf\n", B[k], Bg[k]);
}
fclose(fa);
fclose(fb);
return 0;}
【问题讨论】:
-
你需要用空格分隔参数
-
你想要
a.out a.txt + b.txt -
检查
argc以避免尝试访问实际上不存在的参数。在每个使用命令行参数的程序中执行此操作。 -
ohhhhhhhh 好的,现在可以了,但它仍然出现故障并且不会从文件中读取一些行(那些是最后的循环)
标签: c file segmentation-fault coredump