我不知道我是否必须再说一遍,但英语不是我的母语,我不是一个很好的学生,我见过你能够纠正我的消息,这很好,但我想再次道歉。分段错误,当我管stdout我的程序
这是处理,我有一个程序,它将参数中传递给定的图形转换为Dimacs格式,我将存储在.cnf文件中。 (我们用它来解决它与SAT求解器)
当我自己使用它时,他完美的工作,所以我想有另一个程序,graph_generator,我将管道到myprogram有随机graphes 。
我已经制作了我的graph_generator程序,并且他正确地以我想要的格式打印图形,所以我试图基本完成./graph_generator | ./myprogram,但我立即得到了分段错误,我看不到为什么,graph_generator返回的是预期的结果,而当我想使用调试器时,我不知道如何知道我输出结果,我复制粘贴graph_generator myprogram的结果正确地生成我的.cnf文件。
我不知道问题来自哪里,我有一个理论,但它有点跛脚,它是graph_generator的stdout,一旦管道myprogram认为空间是一个参数,并且存在问题。任何人都可以帮助我吗?
int main (int argc, char* argv[]){
graph* mygraph;
int taille, nbEdge;
int i;
FILE* resultat;
printf("mark 1");
taille = atoi(argv[1]);
nbEdge = atoi(argv[2]);
printf("mark 2");
mygraph = build_empty_graph(taille);
for(i = 3; i < argc; i+= 2)
add_edge(atoi(argv[i]), atoi(argv[i+1]), mygraph);
resultat = fopen("resultat.cnf", "w");
write_result_comments(resultat);
write_result_header(resultat, mygraph);
write_first_stack(resultat, mygraph);
write_second_stack(resultat, mygraph);
fclose(resultat);
return 0;
}
这里是myprogram的主,当我与管道使用它,消息“MARK-1”甚至不出现
不,它不会那样做。显示代码段错误的地方。 – stark 2014-11-02 14:55:54
我试图用printf做一些标记,在我甚至尝试用atoi转换参数之前发生段错误。 – 2014-11-02 15:02:16
然后,您要显示的行从'main'开始并转到atoi。 – stark 2014-11-02 15:07:09