• c语言文件操作总结


    #include<stdio.h>
    
    
    /************************************************************************/
    //    FILE *fopen(const char *filename,const char *mode)
    // FILE *freopen(const char *filename,const char *mode,FILE *stream)以指定模式打开文件,并将文件关联到stream流中
    /*  r 打开文件用于读  
        w 创文本用于写,如果存在文本,则删除文本内容,然后写
        a 打开文本或者创建文本用些追加写
        r+打开文本用于更新,即读和写
        w+ 打开文本用于更新,并删除已经存在的内容
        a+ 打开文本用于更新,写文件追加到末尾         
    后3中更新模式,支持对同一文件进行读写,在同读写交叉的操作,需要用fflush来刷新文件内容
    rb  w+b表示对二进制文件进行操作       
    //将文件读/写指针移到距文件头100字节处     
      fseek( fp,  100L, SEEK_SET );                                  
    //将文件读/写指针从当前位置向文件尾方向移50字节  
      fseek( fp,   50L, SEEK_CUR );                          
    //将文件读/写指针从当前位置向文件头方向移50字节  
      fseek( fp,  -50L, SEEK_CUR );  
    //将文件读/写指针从文件尾回移100字节  
      fseek( fp, -100L, SEEK_END );                                                    */
    /************************************************************************/
    int main(){
        FILE *fp;
        int re =1;
        int re2 = 10;
        char c ;
        char str[50];
        int iFC = -1; 
        int cnt = 0;
        memset(str,0x00,sizeof(str));
        fp = fopen("d:\t2.txt","a+");
    
        //文件按行读取
        while (!feof(fp))
        {
            cnt++;
            printf("第%d行
    ",cnt);
            /**原型是:char *fgets(char *s, int n, FILE *stream);从文件指针stream中读取n-1个字符,存到以s为起始地址的空间里,直到读完一行,如果成功则返回s的指针,否      则返回NULL。*/
            fgets(str,100,fp);
            printf("%s
    ",str);
            if (cnt==1)
            {
                fgets(str,100,fp);
                printf("%s",str);
                break;
            }
        }
    
        printf("*****************
    ");
        fseek( fp,  -2L, SEEK_END );                                  
        c = getc(fp);
        printf("fp = [%c]
    ",c);
        printf("*****************
    ");
    //     //末尾插入e
    //     fseek( fp,  0L, SEEK_END );  
    //     putc('e',fp);
    
        //单个字符打印内容
        fseek( fp,  0L, SEEK_SET );   
        c = getc(fp);
        while(c != EOF){
            printf("fp = [%c]
    ",c);
            c = getc(fp);
            //char是5多打印一次        
            if(c == '5'){
                fseek(fp,-1L,SEEK_CUR);
                printf("fp = [%c]
    ",c);
                fseek(fp,1L,SEEK_CUR);
            }
        }
        
        //从头开始读取5个字节(实取4个)
        fseek( fp,  0L, SEEK_SET);   
        fgets(str,59,fp);//sizeof is 5, strlen is 4  because of ''
        printf("str--------> = [%s]
    ",str);
            
        //从头开始读取6个字节
        fseek( fp,  0L, SEEK_SET);   
        fread( str, 3, 2, fp );  //参数3 size_t表示每个数据项包含的字节数
        printf("str = [%s]
    ",str);
    
        //文件尾写入endEND
        fseek( fp,  0L, SEEK_END);   
        fputs("end",fp);
        fseek( fp,  0L, SEEK_CUR);   
        fwrite("END",3,1,fp);
        fseek( fp,  0L, SEEK_END);  
        //   int getline(char s[],int lim) 
      //    fp->getline(str,0);
    //文件关闭 iFC = fclose(fp); if (iFC) { printf("Failed to close file!"); } }
  • 相关阅读:
    【读书笔记】房龙-人类的故事
    【读书笔记】曼昆-经济学原理:宏观经济学分册
    【读书笔记】曼昆-经济学原理:微观经济学分册
    ES6数组去重
    switch语句
    if语句的优化
    程序的三大结构
    NaN
    js中常见的数据类型
    变量的命名规则
  • 原文地址:https://www.cnblogs.com/ashen/p/4471366.html
Copyright © 2020-2023  润新知