所以,我试图打开 2 个文件,每个文件都有 3 行和 2 个数字。编译后,我在终端中运行它(我使用的是 Ubuntu ftr)作为
./a.out a.txt+b.txt
它什么也不返回。当我注释掉代码的“检查它是否正确打开”部分时,它只是吐出一些数字并打印出错误“Segmentation fault (core dumped)”。我真的不知道我做错了什么,因为这段代码对我的 friend 来说运行良好。我在下面提供了令人讨厌的代码。 (其余代码应该对数字运行操作,这就是文件名之间有一个加号的原因。)
#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;}
最佳答案
(除了其他答案:)这部分代码,
for (k=0;k<3;k++){
fscanf(fa, "%lf %lf", &A[k], &Ag[k]);
fscanf(fa, "%lf %lf", &B[k], &Bg[k]);
}
尝试从 fa
读取六次。大概您打算从第二行的 fb
中读取。
关于c - 打开文件时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53713734/