分段错误:1902 vfscanf.c:没有这样的文件或目录

时间:2017-10-19 15:35:14

标签: c segmentation-fault gdb

我尝试在新安装的Debian系统上编写C程序。程序在scanf()函数处停止并出现分段错误。 这是简化的代码:

int main() {
  int x = 0;
  printf("$ ");
  scanf("%i", x);

  return 0;
}

当我用gdb运行时,我收到此消息:

(gdb) run
Starting program: /home/siery/dev/shell/classes/bin/Recure 

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff71f6794 in _IO_vfscanf_internal (s=<optimized out>, format=<optimized out>, argptr=argptr@entry=0x7fffffffe608, errp=errp@entry=0x0) at vfscanf.c:1902
1902    vfscanf.c: No such file or directory.

使用带有printf()的stdio.h库以及其他一些函数很好。我尝试在互联网上搜索vfscanf.c并找不到太多有用的信息。

顺便说一下。我用g ++编译这个程序,它与gdb一样新更新。

1 个答案:

答案 0 :(得分:3)

scanf("%i", &x);
//          ^ THIS IS THE IMPORTANT BIT

gcc甚至会告诉你这个:

foo.c: In function ‘main’:
foo.c:6:9: warning: format ‘%i’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
   scanf("%i", x);
         ^

vfscanf.c: No such file or directory只是gdb抱怨无法找到scanf的源代码。