12_文件操作

本文详细介绍了C#中的文件操作,包括文件类型指针FILE、文件的打开与关闭(fopen, fclose)、文件的读写,以及文件定位。通过示例展示了如何使用fopen打开文件,不同路径和模式的设置,以及如何使用fclose关闭文件。还讲解了fgetc和fputc进行字符读写,fgets和fputs进行行读写,fprintf和fscanf进行格式化读写,以及fread和fwrite进行块读写的方法。此外,还讨论了文件定位的相关函数fseek、ftell和rewind的用法。" 122583152,11740655,2022年编程语言风云榜:Python登顶,你的选择呢?,"['编程语言', 'Python', 'Java', 'C语言', 'C++', 'C#']
摘要由CSDN通过智能技术生成

12.1 文件类型指针(FILE类型指针)

在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。 

typedef struct

{

short           level; //缓冲区"满"或者"空"的程度

unsigned        flags; //文件状态标志

char            fd; //文件描述符

unsigned char   hold; //如无缓冲区不读取字符

short           bsize; //缓冲区的大小

unsigned char   *buffer;//数据缓冲区的位置

unsigned        ar;  //指针,当前的指向

unsigned        istemp; //临时文件,指示器

short           token; //用于有效性的检查

}FILE;

FILE是系统使用typedef定义出来的有关文件信息的一种结构体类型结构中含有文件名、文件状态和文件当前位置等信息

声明FILE结构体类型的信息包含在头文件“stdio.h”中,一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量。通过文件指针就可对它所指的文件进行各种操作。

C语言中有三个特殊的文件指针由系统默认打开,用户无需定义即可直接使用:

  1. stdin: 标准输入,默认为当前终端(键盘),我们使用的scanf、getchar函数默认从此终端获得数据。
  2. stdout:标准输出,默认为当前终端(屏幕),我们使用的printf、puts函数默认输出信息到此终端。
  3. stderr:标准出错,默认为当前终端(屏幕),我们使用的perror函数默认输出信息到此终端。

12.2 文件的打开与关闭(fopen, fclose)

12.2.1 文件的打开

任何文件使用之前必须打开:

#include <stdio.h>

FILE * fopen(const char * filename, const char * mode);

功能:打开文件

参数:

filename:需要打开的文件名,根据需要加上路径

mode:打开文件的模式设置

返回值:

成功:文件指针

失败:NULL

第一个参数的几种形式:

FILE *fp_passwd = NULL;

//相对路径:

//打开当前目录passdw文件:源文件(源程序)所在目录

FILE *fp_passwd = fopen("passwd.txt", "r");

//打开当前目录(test)下passwd.txt文件

fp_passwd = fopen(". / test / passwd.txt", "r");

//打开当前目录上一级目录(相对当前目录)passwd.txt文件

fp_passwd = fopen(".. / passwd.txt", "r");

//绝对路径:

//打开C盘test目录下一个叫passwd.txt文件

fp_passwd = fopen("c:/test/passwd.txt","r");

第二个参数的几种形式(打开文件的方式):

打开模式

含义

r或rb

以只读方式打开一个文本文件(不创建文件,若文件不存在则报错)

w或wb

以写方式打开文件(如果文件存在则清空文件,文件不存在则创建一个文件)

a或ab

以追加方式打开文件,在末尾添加内容,若文件不存在则创建文件

r+或rb+

以可读、可写的方式打开文件(不创建新文件)

w+或wb+

以可读、可写的方式打开文件(如果文件存在则清空文件,文件不存在则创建一个文件)

a+或ab+

以添加方式打开文件,打开文件并在末尾更改文件,若文件不存在则创建文件

注意:

  1. b是二进制模式的意思,b只是在Windows有效,在Linux用r和rb的结果是一样的
  2. Unix和Linux下所有的文本文件行都是\n结尾,而Windows所有的文本文件行都是\r\n结尾
  3. 在Windows平台下,以“文本”方式打开文件,不加b:
    1. 当读取文件的时候,系统会将所有的 "\r\n" 转换成 "\n"
    2. 当写入文件的时候,系统会将 "\n" 转换成 "\r\n" 写入
    3. 以"二进制"方式打开文件,则读\n写都不会
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值