Linux下的软件编程——标准IO
Linux下的软件编程:1.文件操作—> 一切皆文件 2.多任务—> 进程,线程
3.网络编程 4.构建网络服务器
5.数据库
文件操作:
1.Linux下的文件类型
七种文件类型:
b 块设备文件 —> 存储类设备(硬盘)
c 字符设备文件 —> 输入输出设备(鼠标,键盘,显示器)
d 目录文件 —> 文件夹
- 普通文件 —> xxx.h xxx.c xxx.txt xxx.jpg xxx.mp4 a.out
l 软链接文件 —> 快捷方式
s 套接文件 —> 网络通信
p 管道文件 —> 进程间通信
2.Linux文件解析
drwxr-xr-x 3 linux linux 4096 Mar 19 2020 .vim/
d :文件类型
rwxr-xr-x :文件操作权限 r- read w- write x - 可执行权限,第一个rwx:自己对文件的读写执行权限,第二个r-x:同组用户对文件的读写执行权限,r-x :其他人对文件的读写执行权限
3 :链接个数
linux :用户名
linux :同组名
4096 :文件大小
3.文件操作思想
(1)打开文件 (2)读写文件 (3)关闭文件
4.文件操作的方法
linux下的2种文件操作方法:
(1)标准IO :C标准库提供的一套对文件的操作方法 ——> 库函数
(2)文件IO :linux内核提供的一套对文件操作的操作方法 ——>系统调用
I : input O :output
5.标准IO
(1)打开文件:fopen
(2)读写文件:fgetc / fputc:一个字符一个字符的读写
fgets / fputs:一行一行的读写
fread / fwrite:
(3)关闭文件:fclose
man手册
第一章节:linux命令 第二章节:系统调用 第三章节:库函数
FILE *fopen(const char *pathname,const *mode)
(1)功能:打开一个文件并获得一个文件流指针
(2)参数:pathname:打开的文件名地址
※ mode:打开方式
"r"以读的方式打开 "r+"以读写的方式打开
"w"以只写的方式打开,文件存在则清空,文件不存在则创建文件
"w+"以读写的方式打开,文件存在则清空,文件不存在则创建文件
"a"以追加写的方式打开,文件不存在则创建文件
"a+"以读写的方式打开,文件不存在则创建文件,文件存在追加写
stream (流):字节流
文件流:数据从文件流入流出体现出来的字节流
标准IO:FILE —> 文件流 FILE *—> 文件流指针—>已打开的文件
(3)返回值
成功:文件流指针:FILE*
失败:NULL
int fputc(int c , FILE *stream)
(1)功能:向文件中写入一个字符
(2)参数:c :要写入的字符
stream :要写入的文件的文件流指针
(3)返回值:成功:写入字符的ASCII值
失败;EOF(-1)
sizeof(变量 / 数据类型)—> 在内存中所占的字节数
strlen(字符串的首地址 / 字符型数组数组名)—> 该字符串在内存中所占的字节数
int fgetc (FILE *stream)
(1)功能:从文件中读取一个字符
(2)参数:stream:要写入的文件的文件流指针
(3)返回值:成功:读到的字符ASCII值
失败 / 读取到文件:EOF
※ 主函数传参:./a.out aaa bbb —> 实参
形参:主函数中的参数
argc:程序运行时给主函数传递的参数个数
argv:指针数组,argv个指针,分别指向了给主函数的实参
argv[0]:"./a.out" "aaa" "bbb"
普通文件:文本文件:1.txt xxx.c xxx.h
二进制文件:xxx.jpg a.out xxx.png xxx.mp4
int fputs(const char *s,FILE *stream)
(1)功能:向文件中写入字符串(不会写入‘\0’)
(2)参数:s:字符串首地址
stream:要写入的文件流指针
(3)返回值:成功:非负的整形数据
失败:EOF(-1)
char *fgets(char *s,int size,FILE *stream)
(1)功能:从文件中读取一行数据
(2)参数:s:用来存放读取到数据的内存空间首地址
size:希望从文件中读到的字节数
stream:要读取的文件流指针
(3)返回值:成功:返回s空间的首地址
失败 / 读到文件末尾:NULL