C语言 day08 基础知识学习

一、文本文件读写
  1. int fgetc(FILE *stream);
      作用:从文件中读取一个字符。(内存获取--从文件读出来)
      参数:stream 是fopen的返回值。文件结构体。
      返回值:如果成功获取到的字符的sacii值,如果失败返回EOF 就是-1;
      请把danny.log文件的所有内容全部读取出来。   
   
     2. int fputc(int c, FILE *stream);
       作用:写一个字符到文件中(内存中数据到文件中)
       参数:c 是需要写入文件是字符ascii
                 stream 是fopen的返回值
       返回值:如果成功返回写入的字符,失败返回EOF 
       补充: perror是打印错误信息,使用perror(字符串);
                  在文件中会有一个全局变量errno,记录的是最后一次的错误信息
                   错误信息对应一个字符串,perror会把字符串内容打印。
      


      3.   char *fgets(char *s, int size, FILE *stream);
         作用: 从文件中读取一个字符串
          参数:s  缓冲区,用来存放读取到的字符串。
                   size 大小,一次性读取的字符个数
                   stream :fopen的返回值
        返回值:如果成功返回读取到的字符首地址,如果失败返回NULL

        注意:实际读取到的字符是size-1个,会自动在后面加‘\0’;
       4.int fputs(const char *s, FILE *stream);
        作用:写入字符串到文件中
        参数: s  需要写入的字符串首地址
                   stream:fopen的返回值
         返回值:如果成功返回实际写入文件的字符个数,失败返回EOF
         注意:写入的时候不会把字符串的'\0'写入到文件中
       
     5. 在文件内部,有一个专门处理光标位置的指针,文件偏移指针
     
      6.int fseek(FILE *stream, long offset, int whence);
          功能:移动文件偏移指针到指定位置, 
          参数: offset:偏移多少字节,负数则往左偏移,整数往右偏移
                      whence:  SEEK_SET 从文件头开始
                                        SEEK_CUR 从当前位置开始
                                        SEEK_END 从文件末尾开始
            
      7. 函数原型:long ftell(FILE *stream);
        功能:返回文件偏移指针位置
        参数:fopen的返回值
        返回值:光标所在位置,文件偏移指针位置。

       8.void rewind(FILE *stream);
          作用:把文件光标移动在文件头
          参数:fopen返回值
          返回值:无
     
       练习:请写代码,把abc.log文件复制一份到abc-bak.log中(day08/copyfile.c)

      9.int feof(FILE *stream);
        作用:判断文件是否结束
        参数: 文件结构体指针 fopen返回值
        返回值:如果文件结束返回真,如果文件未结束返回假(0)
        注意:错误信息保存在errno,可以用perror打印、
   
    10. size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
         作用:读二进制文件到内存中
         参数: ptr  是缓冲区,用来存放读取的二进制内容,
                    size 每一块的大小
                   nmemb:读的块数,总共读取几块,总大小是size* nmemb
                   stream : 文件的结构体指针,fopen的返回值
          返回值:实际读取到的块个数。小于等于nmemb的值。

        11.size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
            作用:写入二进制到文件
           参数: ptr  是缓冲区,用来存放写入文件的内容,
                      size  写入每一块的大小
                     nmemb:写的块数,总共写入几块,总大小是size* nmemb
                    stream : 文件的结构体指针,fopen的返回值
          返回值:实际写入文件的个数。小于等于nmemb的值。
 
       12.int fscanf(FILE *stream, const char *format, ...);   (自学内容)
             作用:读取文件内容到内存中
             参数:stream 文件指针 fopen返回值
                       format 格式化处理字符串
    while(fscanf(fp,"%d %s %s %d %d %d %d %d",&W[i].id,W[i].name,W[i].sex,&W[i].age,&W[i].chinese,&W[i].math,&W[i].english,&W[i].sum)!=EOF)
    {
        i++;
    }


        13. int fprintf(FILE *stream, const char *format, ...);  (自学内容)
              作用:写入内容到文件中
              参数:stream 文件指针 fopen返回值
                       format 格式化处理字符串

//    fprintf(fp,"学号\t 姓名\t 性别\t 年龄\t 语文成绩\t 数学成绩\t 英语成绩\t  总成绩\n");
    for(i=0;i<a;i++)
    {    
        fprintf(fp,"%d\t\t %s\t %s\t\t %d\t\t %d\t\t\t %d\t\t %d\t\t  %d\n",W[i].id,W[i].name,W[i].sex,W[i].age,W[i].chinese,W[i].math,W[i].english,W[i].sum);
    }
    fclose(fp);

      
        练习: 在文件中写入3个结构体,结构体中有id age和name,请把读取到的所有name写入到另外一个文件中。把文化a中所有学生信息的名字提取出来放入文件  b中
       
    预习: 排序算法,查找算法,冒泡,二分,快速,选择,插入,桶排序,基数排序。

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值