第2个回答 2011-01-11
哈哈,不知道楼主看没看过海贼王?
路飞一伙进入伟大航路后,要按照“指针”来从一个岛屿到下一个岛屿
其实C语言中的“指针”的意思也是这样,所谓“指针”,不如说是“指南针”,再高端点,应该叫“GPS”,指针变量存的就是“GPS坐标”这个信息,这个“GPS坐标”,就是内存中的某个位置, 指针变量存的这个地址,我们知道也没用,我们利用指针,是希望能通过指针,来找到内存中的这个地址,然后去看这个地址中存储的数据(值,或者类比来说指针指向岛屿,岛屿上的树呀,花呀,就是这个岛屿的内容。对于计算机来说,岛屿就是内存中的一块地方,那么些花草就是 整形、字符之类的数据)
说到这,LZ应该明白,指针并不是容器,而是一个“定位器”,我们用指针,就是希望能够随时找到这个内存位置上的值
所谓的文件指针,也是这个意思,我们用fopen这个函数,把一个文件以流的形式寄存在了内存当中,但仅仅是这样而已,你什么都做不了~于是,指针出现了,文件指针帮助你找到这个文件流在那内存中的具体位置,好让你来对其进行操作~
我不知道你的书是咋写的,有的书确实特别垃圾,fopen这么一个函数就能列一个大表,新手看着就恶心。其实只要记住,字母w(WRITE)代表写入,字符r(READ)代表读,加上后缀b(BIN)代表读的文件是二进制的(不加或者加t代表读入的是文本文件),字母a代表追加(我自己一直就是当add的简写……),后缀+号,代表可读写。那个大表完全是这些字母的排列组合。
读一个txt,一般都用r这个形式来读,读完了文件要用fclose来关闭这个文件流,
比如做排行榜,你要先读取原先的排行榜,也就是以读的形式打开这个文件,然后把文件中的数据提取出来(一般存文件的时候都用块存储,fwrite这样的函数,可以直接存一个结构体,读的时候用块读取fread函数,很方便哦~),提取出来之后,这个文件流就可以关闭了。
之后的事就是用最新的分数和排行榜来比较,看看有没有要更新的地方(这个就不详说了~就是一般的排序算法)
然后再以w的方式,也就是写的方式来打开文件,然后把更新好的数据一个一个按块(直接把一整个结构体或者数据存进去),然后再关闭文件流。
/////////////////////这是我曾经写过的排行榜的代码,这是读文件的部分,略掉了变量定义的部分。
//读文件
highScoreF = fopen("highscore.dat", "r");
if(highScoreF == NULL) //若文件不存在,则构建一个空的排行榜文件
{
highScoreF = fopen("highscore.dat", "w");
for(int i = 0; i < 10; i++) fwrite(&highScore[i], sizeof(struct HS), 1, highScoreF);
fclose(highScoreF);
}
highScoreF = fopen("highscore.dat", "r");
for(int i = 0; i < 10; i++) fread(&highScore[i], sizeof(struct HS), 1, highScoreF);
fclose(highScoreF);
//////////////////////////////////////////////////////
结构体的原型是
//榜单结构体
struct HS
{
char name[NAME_LIMIT + 1];
int Score;
};
////////////////////////////////////////////////////////////////
能从文件中读出数据,那再怎么对数据操作都应该是你非常会的知识了~
至于更新排行榜文件吗,和读文件类似,我就不粘代码了,留点你自己思考的空间么~
以上全是我的心得哦~大半夜辛辛苦苦打的哦~~~希望你能明白,学编程,就是要学会多查资料,多动手编程,书编的不好,就拿步步高打火机点了他~so easy~ 学会利用搜索引擎,你能学到很多很多的,祝你进步!本回答被提问者采纳