写入文件的完整位置时出现分段错误

时间:2018-11-07 22:52:36

标签: c segmentation-fault

快速提问 这段代码给我带来了细分错误

f = fopen("~/proj/viagens.txt", "r");

但是这个没有

f = fopen("viagens.txt", "r");

那是为什么?

1 个答案:

答案 0 :(得分:3)

~是一种表示法,它由您的Shell(例如Bash)扩展到您的主目录中,因此,如果您调用vim ~/proj/viagens.txt之类的程序,则Shell会将参数扩展为{{1} } {em>之前程序/home/ventura/proj/viagens.txt曾经看到它。 vim不能理解~,因此需要绝对路径或相对于当前工作目录的路径。

(如@Osiris和@AndrewHenle在其注释中指出的,fopen不会进行段错误,但是当找不到文件时它将返回null,这将在您下一行时导致段错误。尝试使用fopen作为文件描述符。)