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]);
}
原文地址:https://www.cnblogs.com/KevinGeorge/p/10301205.html