云计算百科
云计算领域专业知识百科平台

嵌入式学习 标准IO(完整版)

 

C语言标准IO概述

标准IO(Standard Input/Output)是C语言中用于处理文件和数据流的一组函数库,定义在<stdio.h>头文件中。与低级IO(如read/write)相比,标准IO提供了缓冲机制,提高了数据读写的效率。标准IO的核心是FILE结构体指针,通过它操作文件流。


fopen/fclose

功能

  • fopen:打开文件并返回文件指针。
  • fclose:关闭文件并释放资源。

函数原型

FILE *fopen(const char *filename, const char *mode);
int fclose(FILE *stream);

参数说明

  • filename:文件路径。
  • mode:打开模式(如"r"只读,"w"写入,"a"追加等)。
  • stream:已打开的文件指针。

示例

FILE *fp = fopen("test.txt", "w");
if (fp == NULL) {
perror("Error opening file");
return 1;
}
fclose(fp);


fgetc/fputc

功能

  • fgetc:从文件流中读取一个字符。
  • fputc:向文件流写入一个字符。

函数原型

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);

示例

FILE *fp = fopen("test.txt", "r");
int ch = fgetc(fp); // 读取一个字符
fputc('A', fp); // 写入字符'A'


fgets/fputs

功能

  • fgets:从文件流读取一行字符串。
  • fputs:向文件流写入字符串(不自动添加换行符)。

函数原型

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

参数说明

  • str:存储读取数据的缓冲区。
  • n:最多读取的字符数(包括\\0)。

示例

char buffer[100];
fgets(buffer, 100, stdin); // 从标准输入读取
fputs("Hello", stdout); // 输出到标准输出


fscanf/fprintf

功能

  • fscanf:格式化输入(类似scanf,但针对文件流)。
  • fprintf:格式化输出(类似printf,但针对文件流)。

函数原型

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

示例

int num;
fscanf(fp, "%d", &num); // 从文件读取整数
fprintf(fp, "Number: %d", 42); // 写入格式化字符串


fread/fwrite

功能

  • fread:从文件流读取二进制数据块。
  • fwrite:向文件流写入二进制数据块。

函数原型

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

参数说明

  • ptr:数据缓冲区指针。
  • size:每个数据项的字节数。
  • nmemb:要读写的数据项数量。

示例

int arr[5] = {1, 2, 3, 4, 5};
fwrite(arr, sizeof(int), 5, fp); // 写入数组
fread(arr, sizeof(int), 5, fp); // 读取数组


fseek/rewind/ftell

功能

  • fseek:设置文件流的位置指针。
  • rewind:重置文件指针到开头。
  • ftell:返回当前文件指针位置(字节偏移量)。

函数原型

int fseek(FILE *stream, long offset, int whence);
void rewind(FILE *stream);
long ftell(FILE *stream);

参数说明

  • offset:偏移量。
  • whence:基准位置(SEEK_SET开头,SEEK_CUR当前位置,SEEK_END末尾)。

示例

fseek(fp, 10, SEEK_SET); // 移动到第10字节
rewind(fp); // 回到文件开头
long pos = ftell(fp); // 获取当前位置

赞(0)
未经允许不得转载:网硕互联帮助中心 » 嵌入式学习 标准IO(完整版)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!