C语言程序设计--文件操作

原文链接: http://www.cnblogs.com/KevinGeorge/p/10301205.html

前言



这里尝试与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 == '\n'){
            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\n", j, lines[j]);
}

转载于:https://www.cnblogs.com/KevinGeorge/p/10301205.html

猜你喜欢

转载自blog.csdn.net/weixin_30410119/article/details/94863073
今日推荐