疑问:
fopen(文件路径, 文件打开方式);
C语言中存在转义字符'\',在输入绝对路径时,正斜杠/和反斜杠\的使用规范问题
编译器:Microsoft Visual C++ 2010 Express
(测试前提条件:E盘根目录下新建一个txt文件命名为ww.txt,内容输入about后保存)
fopen
测试代码一:
FILE *fp;
char nn[20];
fp = fopen("E:\ww.txt", "r");
fgets(nn, 20, fp);
printf("%s", nn);
测试代码二:(编译出现警告)
只改变下列语句
fp = fopen("E:\ww.txt", "r");
测试代码三:
只改变下列语句
fp = fopen("E:/ww.txt", "r");
测试代码三:
只改变下列语句
fp = fopen("E://ww.txt", "r");
测试代码四:
FILE *fp;
char nn[20];
char ss[20];
gets(ss);
fp = fopen(ss, "r");
fgets(nn, 20, fp);
printf("%s", nn);
在测试代码四的基础上测试不同输入:
输入e:\ww.txt 回车
输入e:\ww.txt 回车
输入e:/ww.txt 回车
输入e://ww.txt 回车
额外输入测试:
e:\\ww.txt
e:///ww.txt
现在对fopen()文件路径的输入时正斜杠反斜杠使用有点疑惑
当使用gets输入路径时到底该输入一个反斜杠还是两个反斜杠?(单从运行结果上我看不什么区别)
测试代码二编译时出现了警告,但是运行结果是正确的,为什么?
在UNIX下,路径是用/隔开各级目录,而在windows下,变成了,这源自于dos
另外,字符串里,\用于转义,也就是一般\和后面一个字符在一起才代表最终程序里的一个字符,而\后面再接一个\代表字符,所以应该是两个反斜线。
还有个问题
当在fopen里面直接输入路径时,使用了一个反斜线出现了警告,但是运行的结果是正确的,
意思是文件仍然被正常打开了,但是\ww.txt这个给出的文件路径是不完整的,警告的内容也是warning C4129: “w”: 不可识别的字符转义序列,为什么还能正常打开文件读写呢?
感谢回答
@蓝海人: \用来转义,于是\和后面那个字符一起构成一个字符。但是编译器发现,\w无法构成一个字符,于是编译器会猜测你写错了,猜测你的意思应该是\和w两个字符,然后按猜测的结果编译。
@窗户: 感谢解答
fopen函数中打开的文件路径可以使用参数化吗