0
点赞
收藏
分享

微信扫一扫

TCP/IP详解——HTTP 协议

开源分享 2023-12-17 阅读 39
c语言

一. 文件的好处

如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,而文件可以帮助我们永久保存数据,防止丢失

二. 文件的分类

从功能的角度分类:

分为 程序文件数据文件

1. 程序文件

包括 源文件(后缀.c), 目标文件(windows环境后缀.obj), 可执行文件(windows环境后缀.exe)

2. 数据文件

文件的内容不一定是程序,而是程序运行时读写的数据

从数据组织的角度分类:

分为 二进制文件文本文件

a. 二进制文件

数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。

b. 文本文件

如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。

字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。

三. 流 和 标准流

1. 流 的概念

数据的输入和输出都需要依靠外部设备,因为不同外部设备输入输出不同,为了方便操作方便,引出流的概念

进行输入输出的时候,都需要打开流

2. 标准流 的概念

实际上,当我们使用printf 和 scanf 这样输入输出的函数时,已经打开了流,这个流就是标准流(本质是对于键盘的输入输出)

C语言启动时 ,会打开的三个标准流

a. stdin --- 标准输入流

b. stdout -- 标准输出流

c. stderr -- 标准错误流

stdin、stdout、stderr 三个流的类型是: FILE* ,通常称为文件指针,C语言可以通过文件指针来维护流

四. 文件指针

文件指针的概念和作用

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件信息,这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名 FILE

每当打开一个文件的时候,系统会根据文件的情况自动创建一个 FILE结构的变量,并填充其中的信息,通过文件指针变量能够间接找到与它关联的文件

五. 文件的打开和关闭

1. 文件的打开

fopen 函数来打开文件

2. 文件的关闭

fclose 函数来关闭文件

3. 文件的使用方式

a.    "r" (只读):

打开一个已经存在的文件(没有这个文件就会报错)

b.    "w"(只写):

打开一个文件,如果没有就新创建一个文件,结束程序时,下一次还使用 “w”方式打开文件,里面的内容不会保存

c.   "rb"(二进制读)

打开一个已经存在的文件(没有这个文件就会报错)

d.    “wb"(二进制写)

打开一个文件,如果没有就新创建一个文件

六. 顺序读写函数

1. fgetc

字符输入函数 (相当于从流中读取数据)

注意事项:

  1. int fgetc (FILE* stream)

返回类型 : int (返回的是字符的ASCLL码值)

    2. 参数 stream

stream 是流的指针(适用于所有流)

参数类型是 FILE *

    3. 引用头文件

<stdio.h>

2. fputc

字符输出函数 (相当于向流中写入数据)

注意事项:

  1. int fputc (int character, FILE * stream)

返回类型 : int (返回的是字符的ASCLL码值)

    2. 参数 character 和 stream

character 是 字符的ASCLL码值

stream 是流的指针(适用于所有流)

参数类型分别是 int 和 FILE *

    3. 引用头文件

<stdio.h>

3. fgets

文本行输入函数(相当于从流中读取数据)

注意事项:

  1. char * fgets ( char * str, int num, FILE * stream )

返回类型 : char *(返回字符的地址)

    2. 参数 str ,num, stream

str 是数组的地址

num 是读取数据的个数(实际上读取的个数是 num - 1,因为它还会放入一个'\0')

stream 是流的指针(适用于所有流)

参数类型分别是 char* , int , FILE *

  3. 引用头文件

<stdio.h>

4. fputs

文本行输出函数(相当于向流中写入数据)

注意事项:

  1. int * fgets ( const char * str , FILE * stream )

返回类型 : int (返回字符的地址)

     2. 参数 str , stream

str 是数组的地址

stream 是流的指针(适用于所有流)

参数类型分别是 char* , FILE *

    3. 引用头文件

<stdio.h>

5. fscanf

格式化输入函数 (相当于从流中读取数据)

注意事项:

  1. 用法和 scanf 很像,但多了一个参数
  2. 多的参数 stream

stream 是流的指针(适用于所有流)

参数类型是 FILE *

     3.引用头文件

<stdio.h>

6. fprintf

格式化输出函数 (相当于向流中写入数据)

注意事项:

  1. 用法和 printf 很像,但多了一个参数
  2. 多的参数 stream

stream 是流的指针(适用于所有流)

参数类型是 FILE *

    3. 引用头文件

<stdio.h>

7. fread

二进制输入(相当于从流中 以二进制的形式 读取 数据)

注意事项:

  1. size_t fread ( void * ptr, size_t size, size_t count, FILE * stream )

返回类型 :size_t

     2. 参数 ptr ,size , count ,stream

ptr 可以是任何类型的指针

size 是 指针所指对象每个元素的大小

count 是 指针所指对象每个元素的个数

stream 是流的指针(适用于文件

参数类型是 void *,size_ t, size_ t ,FILE *

    3. 引用头文件

<stdio.h>

8. fwrite

二进制输出(相当于向流中 以二进制的形式 写入 数据)

注意事项:

  1. size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

返回类型 :size_t

     2. 参数 ptr ,size , count ,stream

ptr 可以是任何类型的指针

size 是 指针所指对象每个元素的大小

count 是 指针所指对象每个元素的个数

stream 是流的指针(适用于文件

参数类型是 void *,size_ t, size_ t ,FILE *

    3. 引用头文件

<stdio.h>

举报

相关推荐

0 条评论