I/O函数介绍

##流
什么是流?

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]... );

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

扫描二维码关注公众号,回复: 3888076 查看本文章
#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;
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_40550018/article/details/82425191
今日推荐