scanf表现不正常

时间:2015-12-02 20:49:11

标签: c segmentation-fault scanf

我试图通过scanf输入2个数字,但scanf会引发分段错误。

void add_prog_1(char *host){
CLIENT *clnt;
int *result_1;
intpair add_1_arg;
int x;
int y;
clnt = clnt_create (host, ADD_PROG, ADD_VERS, "udp");
if (clnt == NULL) {
    clnt_pcreateerror (host);
    exit (1);
} else {

    printf("Connection Established Successfully");
    scanf("%d %d",&x ,&y);
    printf("Input Successfully");
    add_1_arg.a = x;
    add_1_arg.a = y;

}

该计划的输出是

Connection Established Successfully
4 4 
Segmentation fault (core dumped)

请帮助!!

1 个答案:

答案 0 :(得分:1)

您的问题最有可能发生在其他地方。 我怀疑第二个printf的输出没有被刷新到终端,程序会继续运行,直到你稍后在调用函数中崩溃。

以这种方式修改功能并重新测试:

printf("Connection Established Successfully\n");
scanf("%d %d",&x ,&y);
printf("Input Successfully\n");
fflush(stdout);
add_1_arg.a = x;
add_1_arg.a = y;

您应该学会使用gdb之类的调试器:当程序遇到分段故障时,操作系统会转储一个名为core的文件,您可以使用调试器加载该文件。它包含故障发生时准确指出的所有信息。