| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1577 人关注过本帖
标题:C语言最简单的修改文本文件?
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
学得不错!count参数,你查一查函数的资料即可明白。我要后天才上电脑,到时再详细回你。

授人以渔,不授人以鱼。
2015-08-05 22:26
列车永不停息
Rank: 2
等 级:论坛游民
帖 子:76
专家分:48
注 册:2015-7-31
收藏
得分:0 
回复 31楼 TonyDeng
嗯嗯,我已经下载好VS2010了,原来vs2010在XP系统里面能装!
2015-08-06 09:47
列车永不停息
Rank: 2
等 级:论坛游民
帖 子:76
专家分:48
注 册:2015-7-31
收藏
得分:0 
回复 31楼 TonyDeng
我懂了!!!!原来在Save_Data函数里面,有这样一个语句“fwrite(&count, sizeof(count), 1, file);”后面的才需要先发文件的第一个值给找个参数给占了,后面再去移动内部指针。这里_countof(students)出来的值是3,那个程序我也大致弄懂了。后面我将把这个随机储存用到我的小系统里面。但是这里我有个疑问,就是你说的

“旧的方法是sizeof(arr)/sizeof(char),亦即先算数组的总字节数,除以每个元素的尺寸。对char arr[10],就除以sizeof(char),对int arr[10],就除以sizeof(int)。”

我想试一试这个方法,但是怎么弄都报错,我就重新打开一个,编个小代码,结果还是不行。
#include<stdio.h>

void main()
{
    int a[3];
    int b;
    for(int i=0;i<3;i++)
        scanf("%d",&a[i]);
    for(i=0;i<3;i++)
        printf("%d\n",a[i]);
    b=sizeof(a)/sizeof(int)
    printf("%d",b);
}
这个小程序运行不下去的。咋回事啊?

[ 本帖最后由 列车永不停息 于 2015-8-6 11:23 编辑 ]
2015-08-06 11:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
出警告是吧,用scanf_s()取代scanf()

授人以渔,不授人以鱼。
2015-08-06 11:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
文件的处理模型,跟数组是很像的。比如,在中间删除数据,后面的不会自动向前挪;要插入数据,也要把后面的数据整体往后挤。你感觉到的一点很正确,的确与文本编辑器的改写模式一样。明白了这个模型,自然明白为什么力求固定尺寸读写是最高效率的了。换句话说,就算采用文本文件,也要保持固定的数据尺寸,一个字符串,哪怕实际只有5个字符,也要把宽度占足,并且整个数据列的宽度是一样的(这实际上就是数据库的文件格式),这样程序才好处理。不要为了少占空间而用不定长数据项,须知时空是守恒的,少用了静态的空间,必然在运行时耗费较多的时间去处理别的事情;反之亦然,空间换时间,在计算机系统上是很常见的处理手法。

文件与数组的最大区别,是前者是可以动态伸缩的,后者不可以。很多时候,花大力气去写复杂的内存管理模块,还不如把数据用磁盘文件交换来的简单直接不易犯错,特别是当今的系统和硬件有各种各样的缓冲机制,还去碰这个千古难题,除了自认为天下第一舍我其谁之外,也没别的解释了。当然,立志做陈景润是另一回事,一辈子只钻研一个课题,有国家养的。

授人以渔,不授人以鱼。
2015-08-07 03:33
列车永不停息
Rank: 2
等 级:论坛游民
帖 子:76
专家分:48
注 册:2015-7-31
收藏
得分:0 
回复 35楼 TonyDeng
第一段我理解的意思是:要“规整”,牺牲一定的内存也要让数据变得整齐,方便读取,修改。

而第二段,我就懵了。

其一,“内存管理模块”是不是指我这些天一直问你的“如何在就在文件中修改数据”?

其二,“数据用磁盘文件交换”又是不是指修改文件的方式,还是用输出到数组里面,然后在数组里面修改,而后再次覆盖到文件里面。
2015-08-07 15:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
內存管理是涉及malloc()/free()等在堆中管理數據的行為。

授人以渔,不授人以鱼。
2015-08-08 09:50
快速回复:C语言最简单的修改文本文件?
数据加载中...
 
   



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

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