首先,什么是绝对路径,什么是相对路径?
假设你在公司内部,需要拿到公司内的一个文件。
绝对路径就像你告诉朋友:"文件在北京市朝阳区国贸大厦B座18层3号会议室",必须精确到每个层级。
相对路径就像你在公司说:"文件在18层3号会议室",只需要描述文件相对公司的位置。
这个相对就是程序需要用到的数据等内容相对程序所在文件夹的位置。假设你的程序在 D:\\homework\\hospital,那只需要读取 data.txt,程序看路径的开头不是c盘d盘这种东西,就知道这是相对路径,实际读的就是 D:\\homework\\hospital\\data.txt这个文件。
那为什么要用相对位置?用绝对位置会有什么问题?
假设别人把你的整个 hospital 文件拷贝到 c 盘尝试运行,那你想要读取的文件此时在 C:\\hospital\\data.txt,如果填的是绝对路径,那你的程序依旧回去读 D:\\homework\\hospital\\data.txt,朋友电脑的这里可什么东西都没有,程序一脸懵逼;如果读取的是 data.txt,那程序就会去 C:\\hospital\\data.txt找,嘿,找到了。
其实你程序开头的 #include "hospital.h" 就是相对路径,"main.c" 会在自己所在的文件夹下去找 "hospital.h"。当然,如果你连这个 hospital.h 文件和 hospital.c 都没拷贝过去当然不能编译了哈哈。如果只想运行,那拷贝 .exe 文件就可以了,他就是你的所有代码融合在一起的最终成果,可以直接运行。如果你的程序本身要向文件写入/读取数据,那依旧有读取路径的需求。