LINUX标准输入输出

本文详细介绍了C语言中标准I/O操作的各种函数及其用法,包括文件打开与关闭、字符I/O、行I/O、块I/O及文件定位等,并通过示例展示了如何使用这些函数进行文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FILE* fopen(const char* filename, const char* opentype);
int close(FILE* fp);
opentype可选:r rb只读 文件需存在
w wb只写 如果存在就截断文件为0 不存在就创建一个新文件
a ab添加 如果存在保持不变 不存在就创建一个新文件
r+ rb+更新 文件需存在
w+ wb+更新 如果存在就截断文件为0 不存在就创建一个新文件
a+ ab+更新 如果存在保持不变 不存在就创建一个新文件

FILE* stdin,stdout,stderr

字符I/O
int fgetc(FILE* fp);
int getc(FILE* fp); //fgetc的宏实现版本,速度快
int getchar() //getc(stdin)的特殊实现
int fputc(int ch, FILE* fp);
int putc(int ch, FILE* fp); //宏版本
int putchar(); //putc(stdout)

行I/O
char* fgets(char* buf, int count, FILE* fp) //从一行里面读count-1字节到buf,然后加上'/0',如果一行不足count-1个字节,实际读入整行数据包括换行符

char* gets(char* buf, FILE* fp) //过时危险函数

#include <stdio.h>为linux增加了两个可以读取一行的可靠函数
ssize_t getline(char** lineptr, size_t* n, FILE* fp);
//ssize_t getdelim(lineptr, n, '/n', fp)的特殊实现, 用了二级指针,函数内部可能会对*lineptr remalloc,也会改变缓冲区*n的大小
ssize_t getdelim(char** lineptr, size_t* n, int delimeter, FILE* fp);

例子:
int main() {
FILE* fp = fopen("data.txt", "rb");
char** buf = new char*;
size_t* size = new size_t(5);
while(true) {
*buf = new char[*size];
int count = getline(buf, size, fp);
if(count == -1) {
delete[] *buf;
printf("end/n");
break;
}
printf("%s/n", *buf);
}
delete buf;
delete size;
return 0;
}
int fputs(const char* buf, FILE* fp);
int puts(const char* buf); // fputs(buf, stdout);

块I/O
size_t fread(void* buf, size_t size, size_t count, FILE* fp);
size_t fwrite(void* buf, size_t size, size_t count, FILE* fp);

文件定位
int ftell(FILE* fp);
int fseek(FILE* fp, int offset, int where); //where: SEEK_SET SEEK_CUR SEEK_END
int feof(FILE* fp) // 遇到文件尾返回0

格式I/O
int printf(const char* format, ...);
int fprintf(FILE* fp, const char* format, ...);
int sprintf(FILE* fp, const char* format, ...);

格式输入
int scanf(const char* format, ...);
int fscanf(FILE* fp, const char* format, ...);
int sscanf(FILE* fp, const char* format, ...);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值