在Ubuntu下使用C语言进行文件访问练习。调用标准库的fopen函数时,为了方便使用了~代替家目录。执行程序,失败。
首先查《C程序设计语言》,了解了ferror函数和strerror函数。ferror函数返回一个错误码,以该错误码作为strerror的参数,可以显示执行过程中的错误信息。注意调用strerror函数需要包含string.h头文件。
修改好程序,再次执行,显示的错误信息为段错误。
段错误一般代表访问了无法访问的地址、内存、文件等。因此抱着试试看的心态将~用/home/ID替换。执行程序,成功。
查找资料发现~代表的目录可以在Linux系统当中的一个文件进行配置。因此终端可以依赖配置文件进行解析,但C语言程序的标准行为必然不会解析一个特定系统的配置项。
因此,在程序中指定路径都应该用一般形式的系统绝对路径或相对路径。