fopen打开文件啊,为什么文件名设置为数组就出报错啊?

空瞳里的余生 2019-04-29 02:45:20
long lsize; //定义取文件长度
char *ptr = NULL;
FILE *head;
char arr[] = { "D:\\单词火车2.exe" };
printf("%s", arr);
errno_t err; //fopen_s需要定义的变量
err = fopen_s(&head, "D:\\单词火车2.exe", "rb"); //以二进制可读方式打开文件
使用文件目录,文件打开正常,但是如果把D:\\单词火车2.exe替换为arr 编译器就会报错,我用的VS2015 请教各位大神
...全文
211 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
空瞳里的余生 2019-05-03
  • 打赏
  • 举报
回复
额 本来没有问题的,我用arr 的时候一直加了""然后内存报错,谢谢各位
空瞳里的余生 2019-05-03
  • 打赏
  • 举报
回复
不好意思,这几天出去玩了,明天才回家,没有看论坛。。我明天回去试试,完了就赶紧结算!
zgl7903 2019-04-29
  • 打赏
  • 举报
回复
可能是字符的编码问题 可以试试 系统设置的区域中的非Unicode代码页修改为中文 或者程序先调用 setlocale( LC_ALL, "chs" ); 设置下进程字符集环境 或用UNICODE的 WCHAR _wfopen_s 函数试试看,
六道佩恩 2019-04-29
  • 打赏
  • 举报
回复
应该不会有错,最多警告,警告的原因是这里需要的是一个char*指针,char数组是数组型,不想警告的话就强制转换为指针型。
tongshou 2019-04-29
  • 打赏
  • 举报
回复
会不会是 中文引起的问题?
把文件名改成普通字母看看?
WindyValley 2019-04-29
  • 打赏
  • 举报
回复
引用 楼主 空瞳里的余生的回复:
long lsize; //定义取文件长度
char *ptr = NULL;
FILE *head;
char arr[] = { "D:\\单词火车2.exe" };
printf("%s", arr);
errno_t err; //fopen_s需要定义的变量
err = fopen_s(&head, "D:\\单词火车2.exe", "rb"); //以二进制可读方式打开文件
使用文件目录,文件打开正常,但是如果把D:\\单词火车2.exe替换为arr 编译器就会报错,我用的VS2015 请教各位大神
你把大括号去掉试试吧
自信男孩 2019-04-29
  • 打赏
  • 举报
回复
理论上不会的,因为看到这两个字符串都是一样的。
636f6c696e 2019-04-29
  • 打赏
  • 举报
回复
编译器的报错贴出来
stherix 2019-04-29
  • 打赏
  • 举报
回复
err = fopen_s(&head, arr, "rb"); 应该不会有问题

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧