您的位置:首页 > 编程语言 > C语言/C++

关于C语言文件操作的小结

2011-08-24 18:23 281 查看
一 C语言对文件的操作通常分为两个对。

A:fwrite()和fread()

B:sscanf()和sprintf()

注意:这两对不能混在一起用,否则,会出错。

二  当我们向文件中写入或者读取文本文件的时候,最好是用sscanf()和sprintf()两个函数,因为它们能够有效的避免文本文件中出现的乱码的问题

A:读取文件中内容

while( fgets(buf,1024,fp) != NULL )//判断fp文件中的内容是否已经真的读完。注意:如果真的读完,它的返回值为1;否则,返回值为0
{
p2 = (struct book *)malloc(sizeof(struct book));
sscanf(buf,"%s %s  %s  %s %d  %s %f\n",p2->data.auth,p2->data.name,p2->data.birth,p2->data.num,&p2->data.page,p2->data.place,&p2->data.price);
p2->next = NULL;//p2后面指置空
p1->next = p2;//将p2连接在p1的后面
p1 = p2;//将p2赋给p1
nCount ++;

}


B:向文件中写入内容

while(p != NULL) //判断p是否为空,以便进行循环
{
fprintf(fp,"%s  %s  %s  %s   %d   %s   %f\n",p->data.auth,p->data.name,p->data.num,p->data.birth,p->data.page,p->data.place,p->data.price);
p = p->next;
nCount++;//用于统计保存书籍记录的数目
}

三 当我们想文件中写入或者读取的是二进制文件的时候,一般最好用fread() 和fwrite(),因为这个时候文件里面放在也全部是乱码,具体的很多细节部分也不能理解的很清楚

A:读取文件中内容

 

while( feof(fp) == 0 )//判断fp文件中的内容是否已经真的读完。注意:如果真的读完,它的返回值为1;否则,返回值为0
{
p2 = (struct book *)malloc(sizeof(struct book));
if(fread(p2,sizeof(struct book),1,fp) == 1)//把fp文件中的内容全部放在p2
{
p2->next = NULL;//p2后面指置空
p1->next = p2;//将p2连接在p1的后面
p1 = p2;//将p2赋给p1
nCount ++;
}
}


B:向文件中写入内容

while(p != NULL) //判断p是否为空,以便进行循环
{

if(fwrite(p,sizeof(struct book),1,fp) == 1) //把p中的内容写到fp中
{
p = p->next; //p向后移动一
nCount++;//用于统计保存书籍记录的数目
}
else
{
flag=0;
break; //如果fwrite(p,sizeof(struct book),1,fp)返回值不是一,提前跳出循环
}

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 c struct fp null