为什么用fopen打不开txt文本

傻傻等待dw 2013-04-01 01:13:16
# include<stdio.h>
# include<stdlib.h>
struct stu
{
char name[20];
int num;
char sex;
int age;
char adr[30];
int sal;
char health[10];
char wh[10];
};
void main()
{
struct stu s[6];
int i=0;
FILE *hp,*hp1;
if((hp=fopen("D:\\c++\\stu.txt","r"))==NULL)//j就是这里出了问题
{
printf("open error");
exit(0);
}

if((hp1=fopen("txt1","wb"))==NULL)
{
printf("error");
exit(0);
}

for(i=0;i<6;i++)
{
fscanf(hp,"%s %d %c %d %s %d %s %s",s[i].name,&s[i].num,&s[i].sex,&s[i].age,s[i].adr,&s[i].sal,s[i].health,s[i].wh);

printf("%s %d %c %d %s %d %s %s",s[i].name,s[i].num,s[i].sex,s[i].age,s[i].adr,s[i].sal,s[i].health,s[i].wh);
}
for(i=0;i<6;i++)
fwrite(&s[i],sizeof(struct stu),1,hp1);


fclose(hp);
fclose(hp1);
}
...全文
651 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻傻等待dw 2013-04-03
  • 打赏
  • 举报
回复 1
其实一开始这个问题我也纠结了一天多,最后我在网上找到了答案,因为我是单击右键创建的txt文本,可是我又将他从命名的时候加了个txt,由于系统默认的有个txt,所以相当于有两个及stu.txt.txt,所以在用fopen时找不到,不过还是比较你们的回帖,不管有木有用
kuangyexiangren 2013-04-02
  • 打赏
  • 举报
回复
其实楼主是跟大家开玩笑的。。。。
standupshjzh 2013-04-02
  • 打赏
  • 举报
回复
在我的vc6.0环境下可以运行,结果没有问题。建议楼主再次检查一下路径和文件名,如果错误仍然存在,建议楼主把所使用的环境贴出来,还有楼主说 是if((hp=fopen("D:\\c++\\stu.txt","r"))==NULL)这里有问题,那么请问是编译的时候报错呢,还是运行的时候出错呢还是输出“open error”并退出呢?
chujianzhiru 2013-04-02
  • 打赏
  • 举报
回复
if((hp=fopen("D:\\c++\\stu.txt","rb"==NULL)
猴头 2013-04-02
  • 打赏
  • 举报
回复


好的 ,我也读出来了,虽然是乱码,也不知道哪儿出了问题,不过好几年没搞过C++了..

捣蛋不对 2013-04-02
  • 打赏
  • 举报
回复

至少窝的VC6下还是好使的~
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
会不会是我写的程序本身出了问题啊,
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
有啊,我地址一般都是看文本的属性,直接粘贴在加\,
shen_wei 2013-04-01
  • 打赏
  • 举报
回复
D:\\c++\\stu.txt 你的文件夹下,这个存在吗???
starytx 2013-04-01
  • 打赏
  • 举报
回复
引用 18 楼 u010119916 的回复:
if((hp=fopen("D:\\c++\\stu.txt","r"))==NULL) 我改成这样的也不行啊,
那你d盘根目录有这个叫"c++"的文件夹吗?这个文件夹里又有没有"stu.txt"这个文件呢?
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
if((hp=fopen("D:\\c++\\stu.txt","r"))==NULL) 我改成这样的也不行啊,
h_w_m 2013-04-01
  • 打赏
  • 举报
回复
引用 5 楼 u010119916 的回复:
我的文件就在桌面上 应该有啊,我还打开看了的
桌面的路径怎么可能是 "d:\c++\",这个路径明显不对了 怎么也得形如 D:\...\Desktop\stu.txt 比如我的桌面,路径是 "C:\Users\Hwm\Desktop" 写到C语言中就是 "C:\\Users\\Hwm\\Desktop\\stu.txt"
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
我吧上面的那个程序的路径改成桌面也不行,
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
好,我的文件在桌面上,这还要判读是否存在吗
zk1878 2013-04-01
  • 打赏
  • 举报
回复
我把你代码考下来 运行是可以的 要不你把路径分隔符 \\ 换成 /, 要么你先判断文件是否存在
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
我一开始担心是路径的限制,所以在桌面和d盘里都试过,还是不行,而且那几个读取方式我编写别的程序的时候用过,木有问题。
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
我吧路径改成桌面也不行啊
傻傻等待dw 2013-04-01
  • 打赏
  • 举报
回复
我自己电脑里copy的程序 完全是自己写的
lgjjeff123 2013-04-01
  • 打赏
  • 举报
回复
路径问题,LZ哪里copy的程序的吧
zgl7903 2013-04-01
  • 打赏
  • 举报
回复
确认文件存在且路径正确, 用 "rb" 或"rt" 模式试试看,有可能默认的模式不被支持
加载更多回复(8)

69,371

社区成员

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

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