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]);
    }
    
  • 相关阅读:
    JavaEE——SpringMVC(11)--拦截器
    JavaEE——SpringMVC(10)--文件上传 CommonsMultipartResovler
    codeforces 460A Vasya and Socks 解题报告
    hdu 1541 Stars 解题报告
    hdu 1166 敌兵布阵 解题报告
    poj 2771 Guardian of Decency 解题报告
    hdu 1514 Free Candies 解题报告
    poj 3020 Antenna Placement 解题报告
    BestCoder5 1001 Poor Hanamichi(hdu 4956) 解题报告
    poj 1325 Machine Schedule 解题报告
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/10301205.html
Copyright © 2011-2022 走看看