分段错误回溯到vfprintf?

Kob*_*obi 2 c file-io gdb segmentation-fault

我得到一个分段错误并使用gdb和backtrace,它被引发到vprintf.

#0  0x006e8779 in vfprintf () from /lib/libc.so.6
#1  0x006f265f in fprintf () from /lib/libc.so.6
#2  0x08049fd1 in write_tofile (logfile=0x9843090 "~/www/log") at example.c:446
Run Code Online (Sandbox Code Playgroud)

它在我打电话时发生

file = fopen(log_file, "a"); // log_file = "~/www/log"
fprintf(file, buffer);
Run Code Online (Sandbox Code Playgroud)

fopen可以处理来自不同目录的文件吗?有人会有一个线索,为什么它会在这里发生错误?

Tim*_*Tim 6

使用' ~'作为主目录的缩写是一个shell事物,并不一定在C中可用.这可能导致fopen失败,并且您没有检查返回代码.