我的代碼的第一行出現奇怪的分段錯誤。fopen上的分割錯誤
我所要做的就是調用
FILE *src = fopen(argv[1], 'r');
而且我得到了賽格故障與在gdb消息...
計劃接收信號SIGSEGV,分割過錯。
0x00007ffff779956d in _IO_file_fopen() from /lib/x86_64-linux-gnu/libc.so.6
我將文件的名稱直接複製到運行時執行中。思考?
我的代碼的第一行出現奇怪的分段錯誤。fopen上的分割錯誤
我所要做的就是調用
FILE *src = fopen(argv[1], 'r');
而且我得到了賽格故障與在gdb消息...
計劃接收信號SIGSEGV,分割過錯。
0x00007ffff779956d in _IO_file_fopen() from /lib/x86_64-linux-gnu/libc.so.6
我將文件的名稱直接複製到運行時執行中。思考?
可能傳遞的字符串不是空終止,或者你在argv的
acessing無效指數的第二個參數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'
代替
FILE *src = fopen(argv[1], 'r');
你需要寫
FILE *src = fopen(argv[1], "r");
你_do_參數傳遞給你的程序? – 2013-04-08 13:01:31
你的編譯器應該給出一個警告,說明你的參數是錯誤的。 – teppic 2013-04-08 13:08:20