C语言——文件输入输出课件

在 C 语言中,文件输入输出是通过标准库提供的一组函数来完成的。这些函数提供了打开、关闭、读取、写入文件等功能。以下是文件输入输出的重点总结:

1. 文件指针

C 语言使用文件指针 FILE* 来处理文件。文件指针是由标准库定义的类型,用于表示文件。

2. 打开文件

使用 fopen 函数打开文件。fopen 返回一个文件指针,如果打开失败,则返回 NULL

FILE* fopen(const char* filename, const char* mode);
  • filename:要打开的文件名。
  • mode:文件打开模式,如 “r”(读取),“w”(写入),“a”(追加)等。

示例:

FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
    perror("Error opening file");
    return -1;
}

3. 关闭文件

使用 fclose 函数关闭文件。成功关闭返回 0,失败返回 EOF。

int fclose(FILE *stream);

示例:

fclose(fp);

4. 读取文件

使用 fscanffgetsfread 函数从文件中读取数据。

fscanf

类似于 scanf,但从文件读取数据。

int fscanf(FILE *stream, const char *format, ...);

示例:

int num;
fscanf(fp, "%d", &num);
fgets

从文件读取一行。

char* fgets(char *str, int n, FILE *stream);

示例:

char buffer[100];
fgets(buffer, 100, fp);
fread

从文件中读取块数据。

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

示例:

int data[100];
fread(data, sizeof(int), 100, fp);

5. 写入文件

使用 fprintffputsfwrite 函数向文件中写入数据。

fprintf

类似于 printf,但向文件写入数据。

int fprintf(FILE *stream, const char *format, ...);

示例:

int num = 42;
fprintf(fp, "%d\n", num);
fputs

向文件写入字符串。

int fputs(const char *str, FILE *stream);

示例:

fputs("Hello, world!\n", fp);
fwrite

向文件写入块数据。

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

示例:

int data[100] = {1, 2, 3, 4, 5};
fwrite(data, sizeof(int), 100, fp);

6. 文件定位

使用 fseekftell 函数在文件中定位。

fseek

移动文件指针到指定位置。

int fseek(FILE *stream, long int offset, int whence);
  • offset:偏移量。
  • whence:起始位置(SEEK_SETSEEK_CURSEEK_END)。

示例:

fseek(fp, 0, SEEK_SET); // 移动到文件开始位置
ftell

返回文件指针当前位置。

long int ftell(FILE *stream);

示例:

long pos = ftell(fp);

7. 错误处理

使用 ferrorfeofperrorclearerr 函数处理文件操作中的错误。

ferror

检查文件操作是否发生错误。

int ferror(FILE *stream);
feof

检查是否到达文件末尾。

int feof(FILE *stream);
perror

打印错误信息。

void perror(const char *s);
clearerr

清除文件指针的错误标志和文件结束标志。

void clearerr(FILE *stream);

小结

文件输入输出是 C 语言中的一个重要组成部分,通过 fopenfclosefscanffprintffseekftell 等函数,可以实现文件的打开、关闭、读取、写入和定位等操作。正确的错误处理和文件关闭是确保文件操作正确性和资源释放的重要环节。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值