| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 376 人关注过本帖
标题:文件追加 不了,为什么?
只看楼主 加入收藏
聪儿
Rank: 1
等 级:新手上路
帖 子:75
专家分:3
注 册:2012-9-2
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:9 
文件追加 不了,为什么?
程序运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


#include<iostream>
 #include <algorithm>
 using namespace std;
 
int main()
 {
 int a[3][10],i;
 FILE * fp;
 if((fp=fopen("b.txt","a+"))==NULL) //以读写方式打开文件
cout<<"fopen error!"<<endl;
 
for(int j=0;j<3;j++) //读文件
for(i=0;i<10;i++)
 {
 fscanf(fp,"%d",&a[j][i]);
 }
 
for(i=0;i<3;i++)   //排序
sort(a[i],a[i]+10);
 
for(j=0;j<3;j++)
 for(i=0;i<10;i++) //输出到文件末尾
{
printf("%4d",a[j][i]);
 fprintf(fp,"%4d",a[j][i]);
 }
 
fclose(fp);
 
return 0;
 }
 
代码如上示,我的b.txt中有30个数字。目的是读出来之后 以10个为一组排序,然后追加到该文件末尾。
 

运行结果如上示
 
但是发现 只能读出和排序没有办法追加的文件末尾,这个是什么原因呢?请大神们指导一下,多谢!
搜索更多相关主题的帖子: include return 
2012-11-24 11:05
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:5 
我喜欢直接调用win api
CreateFile
ReadFile
WriteFile

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-11-24 11:30
聪儿
Rank: 1
等 级:新手上路
帖 子:75
专家分:3
注 册:2012-9-2
收藏
得分:0 
初学者,这个还是想稍微搞懂一点 啊。、
2012-11-24 12:52
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
代码没啥太大问题啊 就是没有增加换行符
所以所有字符都增在一行上了

DO IT YOURSELF !
2012-11-24 20:55
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:5 
回复 楼主 聪儿
极大可能是你的b.txt文件被系统锁住了   不支持同时有多个进程进行写操作

b.txt文件编辑完后 然后再保存 为了保险起见  最好还是把文件关了  然后再来运行程序......
2012-11-24 21:39
lyj123
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:152
注 册:2010-11-15
收藏
得分:0 
应该不会被锁住,C语言不太了解,可以选择文件流

相互帮助

2012-11-25 17:15
聪儿
Rank: 1
等 级:新手上路
帖 子:75
专家分:3
注 册:2012-9-2
收藏
得分:0 
回复 4楼 wp231957
您的不太明白。

假若是因为这个原因,那应该是排序后的覆盖最初的数据,但是这个还是最初的数据啊。。
2012-11-26 12:40
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:10 
fseek(fp, 0L, SEEK_END);
    for(j=0; j<4; j++)
    {
        fputs("\n\t", fp);
        for(i=0; i<10; i++) //输出到文件末尾
        {
            printf("%4d",a[j][i]);
            fprintf(fp,"%4d",a[j][i]);
        }

    }
    fflush(fp);
    fclose(fp);
2012-11-26 13:50
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
回复 8楼 newdos
这个什么意思?
2012-11-26 17:20
聪儿
Rank: 1
等 级:新手上路
帖 子:75
专家分:3
注 册:2012-9-2
收藏
得分:0 
确实是fseek的原因。
2012-11-29 09:18
快速回复:文件追加 不了,为什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027353 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved