前言



这里尝试与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]);
}

C语言程序设计--文件操作的更多相关文章

  1. C语言之文件操作

    C语言之文件操作 在本节我们将会讲解有关文件的读写操作: 纲要: 一些需要掌握的知识点 文件名 文件类型 数据流 文件缓冲区 文件指针 与文件操作相关的一些函数 文件的打开及关闭 文件的顺序读写 文件 ...

  2. C语言之文件操作08——总结

    C程序的文件操作共涵盖7个例题,包括格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容. 文件操作使得程序有更强的拓展性,使其能够单独保存数据.这为程序的调试和优化打下了坚实的 ...

  3. c语言_文件操作_FILE结构体解释_涉及对操作系统文件FCB操作的解释_

    1. 文件和流的关系 C将每个文件简单地作为顺序字节流(如下图).每个文件用文件结束符结束,或者在特定字节数的地方结束,这个特定的字节数可以存储在系统维护的管理数据结构中.当打开文件时,就建立了和文件 ...

  4. c语言,文件操作总结

    C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来 ...

  5. C语言的文件操作

    在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也被看成一个文件.对于这些文件的操作,等于是对普通文件的操作.例如,通常把显示器称为标准输出文件,printf就是想这个文件输出,把键盘 ...

  6. C#语言-07.文件操作

    a. 文件操作:适用于相对简单的数据保存 i. 读写文件的步骤: . 创建文件流 . 创建读写器 . 读写文件 . 关闭读写器 . 关闭文件流 ii. FileStream(文件流),它主要用于读写文 ...

  7. Linux下C语言的文件操作

    代码: #include <stdio.h> #include <string.h> #include <fcntl.h> /*************基本的函数A ...

  8. 超赞的 Go 语言 INI 文件操作

    灵活的数据源 不光光可以从文件读取配置,还支持 []byte 类型的纯数据读取和基于 io.ReadCloser 的流式读取. 多种格式兼容 各种文件种类的广泛支持,包括但不限于 my.cnf..gi ...

  9. C语言中文件操作

    用两个指针变量来操作字符串. 多维数组在做函数参数的时候,会退化成为一个指针变量,变成一个指向一维数组的数组指针,注意,是一个指针变量. 一维数组在当作函数参数传递的时候,会退化成为一个对应类型的指针 ...

随机推荐

  1. android:ProgressBar控件

    ProgressBar 用于在界面上显示一个进度条,表示我们的程序正在加载一些数据.它的用 法也非常简单,修改 activity_main.xml 中的代码,如下所示: <LinearLayou ...

  2. android:NinePatch图片制作

    一.工具介绍 这是一张PNG图片,为了方便观看做的比较大.在Android中使用NinePatch图片的一般都是很小的图片,因为当内容多了的时候,背景会自动拉伸来适应内容,而如果图片做大了,内容少,则 ...

  3. MySQL到底能支持多大的数据量?

    MySQL是中小型网站普遍使用的数据库之一,然而,很多人并不清楚MySQL到底能支持多大的数据量,再加上某些国内CMS厂商把数据承载量的责任推给它,导致很多不了解MySQL的站长对它产生了很多误解,那 ...

  4. 马斯克:有62%的程序员认为人工智能会被武器化 #精选AR人工智能算法

    当地时间 9 月 13 日,马斯克在自己的个人推特账号上转推了一篇名为<Hackers Have Already Started to Weaponize Artificial Intellig ...

  5. mysql如何处理亿级数据,第一个阶段——优化SQL语句

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  6. 对象拷贝:jQuery extend

    今天操作一个Array数组对象,本来想着先取出该数组某一行数据,然后把该数据当作另一份数据进行操作. 结果发现,对该数据操作的同时,也对Array数组进行了修改,因为这个数据指向了array数组对象. ...

  7. 阿里云centos7.x 打开80端口(转)

    本文转自:https://blog.csdn.net/tengqingyong/article/details/82805053 一 :阿里云centos7.x用iptables打开80端口 1.安装 ...

  8. JDK自带jvisualvm监控工具

    定位 工具位于jdk\bin目录下(双击运行): 可以本地或者远程调试,本地调试会自动加载,远程调试需要配置.下面以Tomcat为例. 概述 监视 线程 抽样器 Java 堆 百度经验参考:https ...

  9. golang ---tcmalloc浅析

    总体结构 在tcmalloc内存管理的体系之中,一共有三个层次:ThreadCache.CentralCache.PageHeap,如上图所示.分配内存和释放内存的时候都是按从前到后的顺序,在各个层次 ...

  10. openssl命令行工具简介 - 指令x509

    原文链接: http://blog.csdn.net/allwtg/article/details/4982507 openssl命令行工具简介 - 指令x509 用法:           open ...