标准c库文件编程

1.标准c库文件编程有fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等。

FILE *fopen(char *filename, char *mode)
    filename 文件名称
    mode 打开模式:                                            
        r   只读方式打开一个文本文件                           
        r+  可读可写方式打开一个文本文件                       
        w   只写方式打开一个文本文件             (w没有就创建)        
        w+  可读可写方式创建一个文本文件  

        wb  只写方式打开一个二进制文件                          
        a   追加方式打开一个文本文件                           
        ab  追加方式打开一个二进制文件                         
        rb  只读方式打开一个二进制文件                        
        rb+ 可读可写方式打开一个二进制文件                     
                               
        wb+ 可读可写方式生成一个二进制文件                     
        a+  可读可写追加方式打开一个文本文件                   
        ab+ 可读可写方式追加一个二进制文件

open和fopen的区别:
前者属于低级IO,后者是高级IO。
前者返回一个文件描述符,后者返回一个文件指针。
前者无缓冲,后者有缓冲。
前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。
后者是在前者的基础上扩充而来的,在大多数情况下,用后者。

详情见:https://www.cnblogs.com/NickyYe/p/5497659.

         int fgetc(FILE *stream);
        返回值:成功返回 读到的ascll
                失败或者读到末尾 EOF
         
         int fputc(int c, FILE *stream);
         返回值: 成功返回写入的个数
                失败返回EOF
        
        char *fgets(char *s, int size, FILE *stream);
        返回值: 成功返回写入字符串的首地址
                 失败/末尾 返回NULL
        
        int fputs(const char *s, FILE *stream);
        返回值:成功返回正整数
                失败返回EOF
                
        参数  :   你要输出的字符串首地址
                    你要输出的文件流指针

2.写读操作

#include<stdio.h>
#include<string.h>
//fopen 跟fwrite/fread
int main()
{
	
	FILE *fp;      //标准文件  返回值是文件流  并不是文件描述符
	char *str = "haohaoxuexi";
	char readbuf[128]={0};

	fp=fopen("./file1","w+");             

	fwrite(str,sizeof(char),strlen(str),fp);  //数据缓存区 写入一个数据的大小 个数 那个文件  
    fseek(fp,0,SEEK_SET);     //写完之后 光标定位到首位置  下次读的时候才会从头开始读
//str的数据已经写入file14里面

	fread(readbuf,sizeof(char),strlen(str),fp);      //一个读一个字节 读strlen(str)这么多次
//	fread(readbuf,sizeof(char)*strlen(str),1,fp);   //一次性读这么多个 读一次  两种写法
//再将数据读出来 读到readbuf里面

	printf("read :%s\n",readbuf);
	return 0;

}

3.fputs操作

#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>

int main()
{
       FILE *fp;
       int i;
       char *p= "haohaoxuexi";
       int len=strlen(p);
       fp = fopen("./file1","w+");

       for(i=0;i<len;i++)
       {

               fputc(*p,fp);   //把p的内容写进fp
                p++;
       }

        fclose(fp);
        return 0;
}

4.fgets操作

#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>

int main()
{
       FILE *fp;
       int i;
       char c;

       fp = fopen("./file1","r+");

       while(!feof(fp))
       {

                c=fgetc(fp);
                printf("%c",c);
       }
        putchar("\n");
        fclose(fp);
        return 0;
}
~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值