提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、linux7种文件
IO:
Inout
Output
7种文件类型
b 块设备文件 文件io
c 字符设备文件 文件io
l 链接文件 链接io
- 普通文件 标准io/文件io
s 套接字文件 文件io
p 管道文件 文件io
d 目录文件 目录io
文件io
没有缓存的io
标准io
有缓存的io
二、普通文件
1.定义与类比
普通文件大概有两类,
一类:ascii码文件 文本文件/程序/代码
一类:二进制文件 音频/视频/压缩包
2021
acsii码文件;'2''0''2''1'
00110010 00110000 00110010 00110001
二进制文件:
00000000 00000000 00000111 11100101
2.标准io
stdio.h
1.操作文件步骤
1.打开文件 fopen
2.读写文件 fgetc/fputc
fgets/fputs
fread/fwrite
fscanf/fprintf
3.关闭文件 fclose
有空间释放的意思,只能关闭一次。
关闭多次,越界
不关闭,内存泄漏
2.流:
1.方向性
2.顺序性
3.函数接口
1.fopen
FILE *fopen(const char *path, const char *mode);
功能:打开一个文件并建立一个流
参数:
path:文件名或者路径
r 只读
文件不存在,报错 文件存在,只读
r+ 读写
w 只写
文件不存在,创建 文件存在,清空
w+ 写读
a 追加只写
文件不存在,创建 文件存在,追加只写打开
a+ 追加读写
返回值:
成功返回文件流指针
失败返回空指针
2.setvbuf
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
功能:改变流的缓存类型
参数:
stream:文件流指针
buf:缓存区空间首地址
mode:缓存类型
_IONBF 不缓存
_IOFBF 全缓存
_IOLBF 行缓存
size 缓存区大小
返回值:
成功返回0,失败返回
3.缓存类型
1.全缓存:
4k
刷新条件;
1.缓存区满
2.程序结束
3.fflush刷新
和文件建立的缓存
2.行缓存:
1k
刷新条件:
1.缓存区满
2.程序结束
3.fflush刷新
4./n
和终端建立的缓存
3.不缓存
人机交互
界面控制
出错处理
4.特殊流
在程序开始运行时操作系统会打开三个文件流
1.标准输入流
stdin
2.标准输出流
stdout
3.标准出错流
stderr
5.标准io——全缓存文件按操作
1.fputc/fgetc
int fputc(int c, FILE *stream);
功能:
向流中写入字符
参数::
c:要写入字符的值
strea:文件流指针
返回值:
成功返回写入字符的ascii值
失败返回EOF
int fgetc(FILE *stream);
功能:
从流中读取字符
参数::
strea:文件流指针
返回值:
成功返回读到字符的ascii值
失败读到文件末尾返回EOF
2.fgets/fputs
int fputs(const char *s, FILE *stream);
功能:
将s指向的字符串写入stream中
参数:
s字符串的首地址
stream:文件流指针
返回值:
成功返回非负数
失败返回EOF
char *fgets(char *s, int size, FILE *stream);
功能:
从流中读取一个字符串
参数:
s字符串的首地址
size:最多存放字符串的个数
stream:文件流指针
返回值:
成功返回字符串首地址
失败或者读到文件末尾返回NULL
注意:
1.fgets遇到\n直接结束,不会向后读取
2.最多读取size-1个字符,必须留一个文职放\0字符
3.fgets遇到\n不会去掉,会将其放入存储空间中,并在\n后面加\0
gets与fgets区别
1.fgets限定了接收字符串的个数,更加安全
2.fgets不会去掉从终端接收到的\n
3.gets可能会发生越界,是危险的
4.gets会去掉从终端接收到的\n
puts与fputs区别
puts会多打印一个\n
fputs不会多打印\n
3.fscanf/fpirntf
int fprintf(FILE *stream, const char *format, ...);
功能:
将格式化字符串打印到stream中
参数:
format:格式化字符串首地址
stream:文件流指针
返回值:
成功返回字符串首地址
失败或者读到文件末尾返回NULL
printf == fprintf(stdout ,...)
int fscanf(FILE *stream, const char *format, ...);
功能:
将格式化字符串打印到stream中
参数:
format:格式化字符串首地址
stream:文件流指针
返回值:
成功返回字符串首地址
失败或者读到文件末尾返回NULL
printf == fprintf(stdout ,...)
功能:
从流中接收格式化字符串
参数:
format:格式化字符串首地址
stream:文件流指针
返回值:
成功返回匹配到的输入控制符的个数
失败返回EOF
printf == fprintf(stdout ,...)
fscanf(stdin,...) == scanf()
4.fwrite/fread
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
功能:
向流中写入nmemb个对象,每个对象size个字节,再ptr指向的空间中存放
参数:
ptr:存放数据空间的首地址
size:对象大小
nmemb:对象个数
stream:文件流指针
返回值:
成功返回实际写入对象的个数
失败返回0
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
功能:
从流中读nmemb个对象,每个对象size个字节,再ptr指向的空间中存放
参数:
ptr:存放数据空间的首地址
size:对象大小
nmemb:对象个数
stream:文件流指针
返回值:
成功返回实际写入对象的个数
失败返回0
读到文件末尾返回0
6.文件流偏移
1.fseek
int fseek(FILE *stream, long offset, int whence);
功能;
定位流的偏移量
参数:
stream文件流指针
offset偏移量可以正可以负
whence SEEK_SET, SEEK_CUR, or SEEK_END 分别是开头 当前末尾
返回值:
成功返回0
失败返回-1
2.ftell
long ftell(FILE *stream);
功能:获取流指针的偏移量
3.rewind
功能将文件流指针定位到开头
5.main函数
int main(int argc, const char *argv[])
参数:
argc 在命令行输入参数的个数
char *argv[] 指针数组 每一个指针指向命令行输入的字符串
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。