scanf行为不正常

问题描述:

我试图通过scanf输入2个数字,但scanf引发分段错误。该计划的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) 

请帮助!

+2

你的scanf调用看起来不错。你确定它是'scanf()'调用给出了段错误而不是代码的其他部分吗? –

+1

请使用调试器来解决这类问题。没有一个完整的例子,我们无法帮助你。 –

+0

@BlueMoon我猜输出上面的代码是 '连接成功建立分段错误(核心转储)'4 4是给出的输入 –

你的问题很可能是在其他地方。 我怀疑第二个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文件,您可以加载调试器。它包含所有的信息,准确指出故障发生的时间。

+0

谢谢,问题实际上是在别的地方。 –