C/C++问题,菜鸟求教。刚学文件操作。望高手赐教:(满意者额外加20~50币!)

请先看代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
fp=fopen("E:\mydata.txt","w");
if(fp==NULL)
printf("file open error\n");
else
printf("file open OK!\n");

system("pause");
return 0;
}
-------->
问题:
我编译、重建、调试都没问题。
但是,出了一个警告:
警告为:warning C4129: 'm' : unrecognized character escape sequence。
-----
请问:
1、这个警告说明什么?
2、为什么会出现这个警告?
3、如何消除,或说解决这个警告?
4、以后写代码时该如何避免此类问题的出现?
---------------
望高手予以剖析!(满意者额外加20~50币!)

这个问题文的好。
1.这个警告是因为
fp=fopen("E:\mydata.txt","w");行中的E:\my。。。引起的,
因为\在c语言中是转义标识符,所以\m被警告了(因为不存在\m),
2.因为不存在\m所以出现了警告
3.如何消除呢?需要取消\的特殊含义,采用\\即可
4.想避免类似的问题,只能打好扎实的基础。。。。多学多练,没别的捷径,或者找个好老师。追问

可是,据我所知,电脑里的所有路径都是‘\’(单斜杠)的啊?是不是说,在printf里面全部都要用双斜杠(' \\ ')???

追答

你应该加强一下C语言基础的学习,电脑里面的路径是\不错,但是
在C语言中\有特殊含义,如果你想表达\,那么必须使用\\,这么说明白了吗?

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-07
楼主犯了个很低级的错误哦,就是C里面的转义字符是怎么定义的,知道“\”怎么用printf打印出来不?改成fp=fopen("E:\\mydata.txt","w");就可以了,另外说一句,你这个程序似乎永远只执行else下面的语句,因为以W打开的方式是执行写操作,如果没有这个文件,似乎会自动 创建,我用的vs2010是这样的,不知道楼主用的是什么环境,可以有不同!给分哦!追问

可是,据我所知,电脑里的所有路径都是‘\’(单斜杠)的啊?是不是说,在printf里面全部都要用双斜杠(' \\ ')???

追答

是的,因为在C语言里面“\”是转义字符!

第2个回答  2012-10-07
无法识别的转义字符
你那个文件名写的不规范,编译器理解为\为转义字符
你改为/就行了
第3个回答  2012-10-07
fopen("E:\mydata.txt","w");
这一句写错啦,应该是
fopen("E:\\mydata.txt","w");
原因是转义字符的问题,你可以查一查
第4个回答  2012-10-07
fp=fopen("E:\\mydata.txt","w"); //在\m前面在加个\

C\\C++问题(基础),望高手解答,(回答完整者额外加20~50币),具体在...
问题1:1、一串数据怎么强制转换?可以将一串数据的起始地址 强制转换为结构体的指针。2、(int)a+6-c是强制转换a还是a+6-c ? (int)(a+6-c)是不是转换a+6-c?(int)a+6-c是强制转换a。 (int)(a+6-c)是转换a+6-c,转换计算结果 问题2:这7个字符的地址是强制固定的, 编译器在编...

寻求暗黑破坏神1.10高手的帮助和赐教(满意超高分)!
提高装备等级依照公式: final ilvl = int(.66 * clvl) + int(.66 * ilvl) 也就是说,最终的装备等级(final ilvl) 为你的角色等级 (clvl) 乘以 0.66 (取整),加上装备原来的等级 (ilvl) 乘以 0.66 (同样取整)6 完美骷髅 + 1 亮金装备 = 1 随机的此亮金装备(同时降低此装备的等级)你可以用这个公...

相似回答