下面的代码可以很好地编译,但是当我使用它时会返回分段错误。
我正在其他主题中搜索一些类似的错误,但没有发现太多。
以防万一,感谢您的帮助。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double main( char *argv[]){
FILE *ifp;
double e,e_a,e_b,a,ct,b,sigma,tol;
double Cla, theta;
int n, nmax;
ifp=fopen(argv[0],"r");
scanf(ifp,"%lf %lf\n",&theta,&Cla);
a=0.002;
b=0.1;
nmax=1000;
ct=(a+b)/2;
tol=0.00000001;
sigma=0.14066;
e_a=theta-(a*6/(sigma*Cla)+3/2*sqrt(a/2));
e_b=theta-(b*6/(sigma*Cla)+3/2*sqrt(b/2));
n=0;
}
答案 0 :(得分:0)
这里有三个问题。首先
scanf(ifp,"%lf %lf\n",&theta,&Cla);
您似乎想使用scanf
时正在呼叫fscanf
:
fscanf(ifp,"%lf %lf\n",&theta,&Cla);
第二个是您正在打开的文件:
ifp=fopen(argv[0],"r");
argv[0]
是正在运行的可执行文件的名称,可能不是您想要的名称。如果要传递第一个参数,请使用argv[1]
ifp=fopen(argv[1],"r");
最后是main
的定义:
double main( char *argv[]){
这不是有效的定义,因为它应该返回int
并同时具有argc
和argv
或都不具有:
int main( int argc, char *argv[]){
您还应该检查是否传递了一个参数:
if (argc < 2) {
printf("missing argument\n");
exit(1);
}