fopen上的分段错误

时间:2013-04-08 13:01:00

标签: c

我的代码的第一行出现了奇怪的分段错误。

我所做的只是致电

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

我在gdb中收到了一条错误信息......

编程接收信号SIGSEGV,分段故障。

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

我将文件名直接复制到运行时执行中。想法?

3 个答案:

答案 0 :(得分:14)

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'

答案 1 :(得分:0)

传递的字符串可能不会以空值终止,或者您在argv上访问无效的índex

答案 2 :(得分:0)

而不是

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

你需要写

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