文件指针

python基础之文件读写

十年热恋 提交于 2019-12-18 03:29:27
前言 文件读写可以说是最常用的功能之一,总结一下python内置的读写文件的方法。 打开文件 open def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): pass 参数说明: file:文件路径,可以是相对路径,也可以是绝对路径 mode: 文件的读写方式,默认‘r’,只读方式; buffering:设置缓冲策略,0用于二进制文件,1为行缓冲,用于文本模式;默认二进制文件固定大小缓冲,文本文件行缓冲 encoding:设置编码,默认utf-8;该参数不能用于二进制模式; errors:设置怎么处理文件的编码异常,默认strict,发生错误抛出异常;设置ignore忽略编码异常,可能导致数据丢失,这个参数不能用于二进制模式; newline:设置换行符,默认换行符为'\n','\r','\r\n',写入文件的时候,所有文本中的上述三种都会转换成'\n'换行符;当设置为''时,也启用默认模式;如果设置其它合法值,则使用其他值,一般不用; closefd=True :设置文件描述符的状态,当为False时,文件关闭但描述符不关闭,但是打开文件时指定了文件名,那么设置False不会起作用。 文件打开方式介绍 r: 以只读方式打开文件

Linux多线程服务器端编程

泄露秘密 提交于 2019-12-17 14:03:31
目录 Linux多线程服务器端编程 线程安全的对象生命期管理 对象的销毁线程比较难 线程同步精要 借shared_ptr实现写时拷贝(copy-on-write) 多线程服务器的适用场合与常用编程模型 单线程服务器的常用编程模型 多线程服务器的常用编程模型 分布式系统中使用TCP长连接通信 C++多线程系统编程精要 高效的多线程日志 日志功能的需求 多线程异步日志 muduo网络库简介 TCP网络编程最本质的是处理三个半事件: 在一个端口上提供服务,并且要发挥多核处理器的计算能力 muduo编程示例 一种自动反射消息类型的Google Protobuf网络传输方案 短址服务 muduo库设计与实现 分布式系统工程实践 C++编译链接模型精要 Linux多线程服务器端编程 源码链接 。 muduo的编译安装 . 陈硕的编译教程 。 bazel编译文件不能有中文路径。 安装到指定目录: /usrdata/usingdata/studying-coding/server-development/server-muduo/build/release-install-cpp11/lib/libmuduo_base.a. 这本书前前后后看了三四遍,写得非常有深度,值得推荐。 编译和安装 . 线程安全的对象生命期管理 利用shared_ptr和weak_ptr避免对象析构时存在的竞争条件

C语言博客作业06--结构体&文件

别说谁变了你拦得住时间么 提交于 2019-12-16 13:53:17
1.本章学习总结 1.1 学习内容总结 1.结构的介绍 结构(Structure)类型是一种允许程序员把一些数据分量聚合成一个整体的数据类型,一个结构中包含的每个数据分量都有名字。这些数据分量称为结构成员或者结构分量,结构成员可以是C语言中的任意变量类型,程序员可以使用结构类型来创建适合于问题的数据聚合。 像数组和指针一样,结构也是一种构造数据类型(或叫派生数据类型),它与数组的区别在于:数组中所有元素的数据类型必须是相同的,而结构中各成员的数据类型可以不同。 2.结构是C语言中一种新的构造数据类型,它能够把有内在联系的不同类型的数据汇聚成一个整体,使它们相互关联;同时,结构又是一个变量的集合, 可以按照对基本数据类型的操作方达单独使用其成员变量。 3.在C语言中,整型、实型等基本数据类型是被系统预先定义好了的,程序员可以用其直接定义变量。而结构类型是由用户根据需要,按规定的格式自行定义的数据类型。 4.结构类型定义的一般形式为: struct 结构名 { 类型名 结构成员名1; 类型名 结构成员名2; … 类型名 结构成员名n; }; 5.struct是定义结构类型的关量字,在struct之后,自行命名一个结构名,它必须是一个合法的C标识符。struct与结构名两者合起来共同组成结构类型名,大括号内的内容是结构所包括的结构成员,也叫结构分量。结构成员可以有多个,这样

scandir函数

Deadly 提交于 2019-12-15 19:30:54
在C语言课程的后端,讲完指针和标准文件IO处理,我会做出一个难度较大练习,题目就是, 利用标准的目录处理函数 opendir/readdir/closedir实现类似于 scandir的功能。其中接口要scandir 函数一致 。 这个题目看起来简单,实现难度相当大,主要采用复杂指针的操作。我第一次拿出来测试,全班大约只一二名实现80%的功能,其余很多觉得无从下手。程序很容易就会出现段错误。基本上短时间内正确的做出来的人可以划归专业级的程度了。有兴趣的人可以先不看后面内容,自行实现一下 首先看一下man的scandir 接口定义 int scandir(const char *dir, struct dirent ***namelist, int(*filter)(const struct dirent *), int(*compar)(const struct dirent **, const struct dirent **)); ,从定义来看就不是一个简单的函数,形参里,出现一个三级指针,二个函数指针。它的功能是,扫描名字为dir的目录,把满足filter函数的过滤条件(即filter执行为非0值)的目录项加入到一维指针数组namelist.数组的总长度为返回值n,如果compar不为空,则最终输出结果还要调用qsort来对数组进行排序后再输出。 从scandir的演示代码

c语言string函数详解

旧城冷巷雨未停 提交于 2019-12-12 22:24:32
文章转自:https://blog.csdn.net/yukadimun/article/details/81388977 @函数原型: char *strdup(const char *s) 函数功能: 字符串拷贝,目的空间由该函数分配 函数返回: 指向拷贝后的字符串指针 参数说明: src-待拷贝的源字符串 所属文件: <string.h> [cpp] view plain copy #include <stdio.h> #include <string.h> #include <alloc.h> int main() { char *dup_str, *string=“abcde”; dup_str=strdup(string); printf("%s", dup_str); free(dup_str); return 0; } @函数名称: strcpy 函数原型: char* strcpy(char* str1,char* str2); 函数功能: 把str2指向的字符串拷贝到str1中去 函数返回: 返回str1,即指向str1的指针 参数说明: 所属文件: <string.h> [cpp] view plain copy #include <stdio.h> #include <string.h> int main() { char string[10]; char

python文件操作

早过忘川 提交于 2019-12-10 17:24:39
在讲io操作的时候,先回忆一下冯诺依曼体系的计算机组成,分为五大构造, 输入设备,存储器,输出设备,运算器和控制器 。运算器和控制器合起来就是cpu。所有的数据都要先加载到内存。内存要多用,O要少用,要知道数据是在内存中怎么玩的,才能提高效率。 运算器:完成各种算数运算,逻辑运算,数据传输等数据加工处理。 控制器:控制程序的执行 存储器:用于记忆程序和数据,例如内存。 输入设备:将数据或者程序输入到计算机中,例如键盘,鼠标等。 输出设备:将数据或者程序的处理结果展示给用户,例如显示器,打印机等。 我们一般所说的IO操作,指的是 文件IO ,如果指的是网络IO,都会直接说网络IO。 使用Python来读写文件是一件非常简单的操作,使用 open()函数 来打开一个文件,获取到一个 文件句柄 ,然后通过文件句柄就可以进行各种各样的操作。当然根据打开方式的不同能够执行的操作也会有响应的差异。 文件IO常用操作包括:open(打开),read(读取),write(写入),close(关闭),readline(行读取),Readlines(多行读取),seek(文件指针操作),tell(指针位置) 而打开文件的方式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b,默认使用的是r(只读)模式。只读(r,rb),只写(w,wb),追加(a,ab)而+是读原模式的补充。

C++文件读写详解(ofstream,ifstream,fstream)

拈花ヽ惹草 提交于 2019-12-10 16:11:41
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: [java] view plain copy print ? #include <fstream> ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读区到内存中 fstream //读写操作,对打开的文件可进行读写操作 1.打开文件 在fstream类中,成员函数open()实现打开文件的操作,从而将数据流和文件进行关联,通过ofstream,ifstream,fstream对象进行对文件的读写操作 函数:open() [cpp] view plain copy print ? <span style= "font-family:Times New Roman;font-size:16px;" > public member function void open ( const char * filename, ios_base::openmode mode = ios_base::in | ios_base::out ); void open( const wchar_t *_Filename, ios_base::openmode

C++文件操作详解(ifstream、ofstream、fstream)

爱⌒轻易说出口 提交于 2019-12-10 15:57:20
C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Open a file) 对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。 要通过一个流对象打开一个文件,我们使用它的成员函数open(): void open (const char * filename, openmode mode); 这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一个组合: ios::in 为输入(读)而打开文件 ios::out 为输出(写)而打开文件 ios::ate 初始位置:文件尾 ios::app 所有输出附加在文件末尾 ios::trunc 如果文件已存在则先删除该文件 ios::binary 二进制方式 这些标识符可以被组合使用,中间以”或”操作符(|)间隔。例如,如果我们想要以二进制方式打开文件"example.bin" 来写入一些数据

SD卡文件操作

≡放荡痞女 提交于 2019-12-10 14:08:11
Fatfs文件系统常用函数:f_mount、f_open、f_close、f_read、f_write、f_lseek、f_truncate、f_sync、f_opendir FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80, 68K 等等,而不需要做任何修改。 特点:Windows兼容的FAT文件系统,不依赖于平台,易于移植,代码和工作区占用空间非常小,多种配置选项:多卷(物理驱动器和分区)、多ANSI/OEM代码页,包括DBCS、在ANSI/OEM或Unicode中长文件名的支持、RTOS的支持、多扇区大小的支持、只读,最少API,I/O缓冲区。 应用程序接口: FatFs 模块为应用程序提供了下列函数,这些函数描述了FatFs能对FAT卷执行哪些操作。 1.f_mount:在FatFs模块上注册/注销一个工作区(文件系统对象) 2.f_open:创建/打开一个用于访问文件的文件对象 3.f_close:关闭一个打开的文件 4.f_read:从一个文件读取数据 5.f_write:写入数据到一个文件 6.f_lseek

第15章 进程间通行 15.3函数popen和pclose

左心房为你撑大大i 提交于 2019-12-09 20:50:19
<436> (1) FILE * popen (const char * command , const char * type ); popen 函数创建一个连接到另一个进程的管道。 若 type 是“r”,则文件指针连接到 command 的标准输出,可通过文件指针读取 command 的输出。 若 type 是“w”,则文件指针连接到 command 的标准输入,可通过文件指针向 command 发送数据。 int pclose (FILE * stream ); //此例子为用popen向分页程序传送文件。popen创建了连接到分页程序的管道。 #include "apue.h" #include <sys/wait.h> #define PAGER "${PAGER:-more}" /* environment variable, or default */ int main(int argc, char *argv[]) { char line[MAXLINE]; FILE *fpin, *fpout; if (argc != 2) err_quit("usage: a.out <pathname>"); if ((fpin = fopen(argv[1], "r")) == NULL) err_sys("can't open %s", argv[1]); if (