Linux1-标准io

一、文件:

1.必要性:

  • 保存数据(存放在外存掉电不丢失数据、便宜、访问速度慢、存储量大)
  • 一切皆文件:鼠标、键盘,显示器……硬件设备
  • 第一个字母为文件类型

2.Linux文件类型:7

b block 块设备文件 存储设备
c character 字符设备文件 输入输出设备

d

directory 目录文件
- regular 普通文件 xxx.c xxx.txt 普通文件
a.out、xxx.jpg 二进制文件
l link 软连接文件 类似windows的快捷方式
s socket 套接字文件 网络通信
p pipe 管道文件 进程间通信

3.Linux下文件操作方法:

I:input O:output

1.标准IO

        标准c库提供的一套文件操作接口。

        2.操作方法
  • 打开文件  fopen
  • 读写 fgets/fputs() fgetc()/fputc() fread()/fwirte()
  • 关闭文件 fclose()

2.文件IO

        Linux内核为Linux系统提供的一套文件操作接口

4.文件操作思想

  • 打开文件
  • 读or写
  • 关闭文件

5.函数接口  

FILE *fopen(const char * pathname,const char *mode)

功能:打开一个文件,并且将文件关联到一个流上

参数:

        pathname :要打开的文件名的指针

        mode:打开方式

        

r 以只读方式打开,定位到文件的开头,文件必须存在

r+

以可读可写方式打开,定位到文件的开头,文件必须存在

w

以只写方式打开,文件不存在则创建,文件已存在清空
w+ 以可读可写方式打开,文件不存在则创建,文件已存在清空
a 以追加写的方式打开,定位在末尾,不存在则创建
a+ 以可读可写的方式打开,读在开头打开,写在末尾追加,不存在则创建

        返回值:

成功:FILE*

失败:NULL

文件流:数据从文件流入和流出体现的字节流

FILE *-->文件流指针

标准IO:将一个打开的文件和一个文件流指针(FILE*)关联,后面操作文件,皆面向文件流指针

 int fputc(int c,FILE *stream)//操作普通文本文件:ASCII码文件、二进制文件

功能:将一个字符写入文件

参数:

        c:写入的字符

        stream:被写入的文件

返回值:

        成功:返回写入的ASCII码值

        失败:返回EOF (-1)

int fclose(FILE *stream);

功能:关闭一个文件

参数:stream:文件流指针

返回值:

        成功:0

        失败:EOF(-1)

 int fgetc(FILE *stream);//指针会自己向后移,则调一次指针会++一次

功能:从文件中读取一个字符

参数:

        stream:要读的文件流指针

返回值:        

           成功:返回写入的ASCII码值

           失败:返回EOF (-1)

int main(int argc,const char *argv[])

argc-->程序运行时,传递给主函数的参数个数

argv-->指针数组

argv[0]  -->   ./a.out

argv[1]  -->   filename

gcc main.c生成 ./a.out

./a.out filename

argv[0] argv[1]         

fgetc和fputs如何读写终端:

终端:文件 操作系统默认打开了三个流:

FILE *

stdin   -->  标准输入流  -->键盘

stdout -->  标准输出流  -->显示屏(终端)

stderr -->   标准出错流  -->显示屏(终端)

一个字节读写文件(普通文件与二进制文件都可copy)

int fputs(const char *s,FILE *stream);//不可操作二进制文件、不会写入(\0)二进制中全是0101

功能:将字符串写入文件

参数:

         s:字符串首地址

         stream:要读的文件流指针

返回值:

        成功:返回正数

        失败:返回EOF

char *fgets(char * s,int size FILE * stream)//输入什么输出什么包括换行(换行停止)

功能:从文件中读取一组数据

参数:

        s:读取到的数据存储在s->buff

        size:最多输出size-1个

        stream:要读的文件流指针

返回值:

        成功:返回存储数据的首地址

        失败:返回NULL

        读到文件末尾:NULL

fgets与scanf区别

fgets:遇到\n停止   可以读到\n

scanf:  遇到空格或者tab(空格制表符)停止     只能读到 空格

fgets与gets区别

fgets:char *fgets(char * s,int size FILE * stream)   包括换行

get:     char *gets(char *s)                                         不包括换行

 Linux1-标准io_第1张图片

 *gets是危险的,没有大小限制,造成越界访问

字符串打印 %s  字符打印 %c

阻塞:进程等待输入时停止运行

* od -c 1.txt   在终端查看1.txt的内容

你可能感兴趣的:(Linux,linux)