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

一 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)返回值不是一,提前跳出循环
		}
	
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值