首页 文章

fopen上的分段错误

提问于
浏览
0

我在代码的第一行得到一个奇怪的分段错误 .

我只是打电话

FILE *src = fopen(argv[1], 'r');

我在gdb中得到了一条带有错误信息的段错误...

程序接收信号SIGSEGV,分段故障 .

0x00007ffff779956d in _IO_file_fopen () from /lib/x86_64-linux-gnu/libc.so.6

我将文件的名称直接复制到运行时执行中 . 思考?

3 回答

  • 0

    fopen()的第二个参数应该是一个字符串,而不是 char

    FILE *src = fopen(argv[1], "r");
    

    请注意双引号 .

    打开编译器警告并密切关注它们总是一个好主意 . 我的编译器选择了不正确的参数:

    test.c:4:1: warning: passing argument 2 of 'fopen' makes pointer from integer without a cast [enabled by default]
    In file included from test.c:1:0:
    /usr/include/stdio.h:250:7: note: expected 'const char *' but argument is of type 'int'
    
  • 14

    可能传递的字符串不是null终止,或者你在argv上访问无效的índex

  • 0

    代替

    FILE *src = fopen(argv[1], 'r');
    

    你需要写

    FILE *src = fopen(argv[1], "r");
    

相关问题