zoukankan      html  css  js  c++  java
  • C语言程序设计--文件操作

    前言



    这里尝试与Python对别的方法来学习C语言的文件操作,毕竟我是Pythoner。

    文件打开与关闭



    Python


    #因为是和C语言比对,所以不使用with
    filename = "/etc/passwd"
    fr = open(filename, 'r') #打开文件
    """
    常见的打开模式有:
    r只读
    w写,如果原来文件有内容会清空
    a追加写,不会清空文件原来的内容
    +  读写
    rb 二进制只读
    wb 二进制写
    ab 二进制追加写
    ...
    fr.close()#文件关闭
    """
    

    C语言


    const char *filename = "/etc/passwd";
    FILE *fr = fopen(filename, "r");//打开文件
    /*
    读写模式与python类似
    */
    fclose(fr);//关闭文件
    

    文件非读写操作



    Python


    fr.flush()  # 直接将缓冲区内容写入文件,不等待
    fr.fileno() #返回文件描述符
    

    C语言


    fflush(fr);
    //描述符是FILE的一个结构体中的一个int类型的变量
    

    文件读操作



    Python


    #  读所有行返回一个list
    lines = fr.readlines()
    #  读取一行
    line = fr.readline()
    line = fr.next()#读取下一行
    #  读取一定大小
    buffer = fr.read([size])
    

    C语言


    /*读取一行*/
    char buffer[1024];
    printf("%s",fgets(buffer, 1024, fr));
    /*读取一字符*/
    printf("%c",fgetc( fr));
    /*读取所有行*/
    int line_count(FILE *fr){
    	int line_number = 0;
    	while(1){
    		char flag;
            flag = fgetc(fr);
    		if (flag == '
    '){
                line_number ++;
    		}
    		else if(flag == EOF){
    			line_number ++;
    			break;
    		}
    	}
    	return line_number;
    }
    int line_number = line_count(fr);
    /*注意如果需要计算完行数后,重新读取文本内容,需要关闭重新打开文件*/
    char lines[number][1024];
    char buffer[1024];
    for (int i=0;i<number;i++){
        fgets(buffer, 1024, fr1);
        strcpy(lines[i], buffer);
    }
    for (int j=0; j<number; j++){
        printf("line-%d:%s
    ", j, lines[j]);
    }
    
  • 相关阅读:
    索引优化策略
    mysql列类型选择
    redis安装
    redis相关面试题
    aop动态代理源码分析
    JVM运行时数据区
    redis应用场景
    JPA相关知识
    技术栈
    linux上安装mysql5.6
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/10301205.html
Copyright © 2011-2022 走看看