I/O函数介绍

本文介绍了流的概念,包括putc, getc, fgetc, fputc等基本的字符I/O函数,以及puts, fgets, fputs函数用于行I/O的操作。此外,还提及了常用的格式化输入输出函数scanf和printf。" 117106336,8041807,腾讯云Serverless相册应用搭建指南,"['Serverless开发', '腾讯云服务', 'Node.js应用', '云存储', '智能识别']

什么是流?

C里的文件流,C里标准文件方式把文件当作流来看,也就是有一个内部缓冲buffer,每次以标准方式打开文件时,读入时先将数据读到这个缓冲区里,写的时候也是先写入缓冲区里。
流分为两种:文本流和二进制流
1.文本流在不同的系统中实现不太相同。
2.二进制流中的字节完全是安照程序编写的形式写入到文件和设备中,而且完全根据他们从文件或者设备读取的方式读入到程序。
##文件
  说起文件,很多人就会想到在stdio.h里面定义了一个FILE的结构,但是在这里,我要说明的是,千万不要把它和磁盘上的文件混淆,我之前就总是认为FILE嘛,不就是个文件嘛!再次声明,绝对不是!!!
  FILE是一种数据结构,用于访问一个流,如果你激活了几个流,那么每个流都会对应一个FILE结构。
  对于每一个ANSI C程序而言,至少打开三个流:标准输入(stdin)、标准输出(stdout)、标准错误(stderr),它们都是指向FILE结构的指针。
 注:标准输入就是键盘设备输入进去      标准输出就是屏幕终端显示的 ##常见的I/O常量     最常见的也是我们所熟知的必定是EOF了,它是文件结束的标志,表示文件到了结尾。 此外还有一些其他的I/O常量: FOPEN_MAX 表示一个程序最多打开文件数。 FILENAME_MAX表示文件名称的最大长度。 ## I/O函数 ###### 文件I/O的一般概况:
1.程序必须给每个文件声明一个指针变量,这个变量的类型为FILE*,当它处于活动状态时为流所用。
2.流通过fopen函数打开,打开的时候必须指定需要访问的文件或者设备以及访问方式。例如:
`FILE* fopen(const char* filename,const char*mode)`
3.根据需要对文件进行读取和写入。
4.fclose函数可以关闭流,防止与它相关的文件再次被访问,保证存储在缓冲区的数据被正确的写入到文件中。例如:
`fclose(FILE* steam)` ###### I/O函数列表:
</tbody>
功能函数名适用于
字符输入函数getchar标准输入流
字符输出函数putchar标准输出流
字符输入函数fgetc  getc所有输入流
字符输出函数fputc  putc所有输出流
文本行输入函数fgtes  gets所有输入流
文本行输出函数fputs  puts所有输出流
格式化输入函数scanf标准输入流
格式化输出函数printf标准输出流
格式化输入函数fscanf所有输入流
格式化输出函数fprintf所有输出流
二进制输入fread文件
二进制输出fwrite文件
## 字符I/O 1. getchar和putchar函数 适用于标准输入流和标准输出流 例如: ``` #include

putc:

C 库函数 int putc(int char, FILE *stream) 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中。
//putc实例:
#include<stdio.h>
int main()
{
	FILE *pf;
	char c;
	pf = fopen("my file.txt", "wt");
	for (c = 'A'; c <= 'Z'; c++)
	{
		putc(c, pf);
	}
	fclose(pf);
	return 0;
}

这里写图片描述
这里写图片描述
getc

int getc(FILE *stream);从文件指针stream指向的文件流中读取一个字符。
#include<stdio.h>
int main()
{
	FILE *pf;
	char c;
	int n = 0;
	pf = fopen("my file.txt", "r");
	if (pf == NULL)
	{
		perror("Error opening file");
	}
	else
	{
		while (c = getc(pf) != EOF)
		{
			n++;
		}
	}
	
	fclose(pf);
	printf("文件包含%d个字符\n", n);
	return 0;
}

这里写图片描述
3. fgetc和fputc函数
适用于所有输入流和输出流

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

getc和fgetc功能一样
putc和fputc功能一样
#####未格式化的行I/O 4. gets和puts函数 ``` char *gets( char *buffer ); int puts( const char *string ); ``` gets
#include<stdio.h>
int main()
{
	char string[256];
	printf("请输入一个城市:");
	gets(string);
	printf("%s是一座古都\n",string);
	return 0;
}

这里写图片描述
puts

#include<stdio.h>
int main()
{
	char string[256] = {"hello,world"};
	puts(string);
	return 0;
}

这里写图片描述
5.fgets和fputs函数

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

fgets

#include<stdio.h>
int main()
{
	FILE *pf;
	char string[100];
	pf = fopen("my file.txt", "r");
	if (pf == NULL)
	{
		perror("open  file  for read");
	}
	else
	{
		if (fgets(string, 100, pf) != NULL)
		{
			puts(string);
			fclose(pf);
		}
	}
	return 0;
}

这里写图片描述

fputs

#include<stdio.h>
int main()
{
	FILE *pf;
	char string[256];
	printf("请输入一句话:");
	fgets(string, 256, stdin);
	pf = fopen("my file.txt", "a");
	fputs(string, pf);
	fclose(pf);
	return 0;
}

这里写图片描述
这里写图片描述

格式化的行I/O

6.scanf和printf函数

int scanf( const char *format [,argument]... );
int printf( const char *format [, argument]... );

这两个函数是我们所熟知且熟用的函数了!在这里不多做说明

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入a和b的值");
	scanf("%d%d", &a, &b);
	printf("%d+%d=%d", a, b, a + b);
	return 0;
}

这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值