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

问题描述 投票:0回答:1

程序因

scanf()
函数处的分段错误而停止。

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

  return 0;
}

GDB 返回以下错误:

(gdb) run
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.

我尝试在互联网上搜索 vfscanf.c 但没有找到太多有用的信息。

程序是用g++编译的,g++(与GDB相同)是新更新的。

c segmentation-fault gdb
1个回答
4
投票
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
的源代码。

© www.soinside.com 2019 - 2024. All rights reserved.