2.c中常用的输入输出函数总结

本文介绍了C语言中常用的文件处理及输入输出函数,包括scanf()、printf()、fscanf()、fprintf()等函数的使用方法及注意事项。

1>scanf() printf()//支持格式控制符的输入和输出

scanf()的返回值是成功读入的项目的个数,如:

num=scanf("%d%d",&a,&b);
如果a、b均读入成功,则num 的值为2

scanf()除了%c模式之外,在读取输入时,均跳过空白字符(制表符、空格、换行符),直到第一个非空白字符处开始读取,读至遇到下一个空白字符或与正在读取类型不符的字符停止。例如读取下面这个输入行:

 -13.45e12# 0

%d模式时,scanf()会读取-13并在小数点处停止,将小数点作为下一个输入字符。然后,scanf()将会把字符序列-13转换成相应的整数值,并将该值存储在目标整型变量中,如果缓冲区前面的是非数字,则scanf()不读入。

%f模式时,scanf()会读取字符-13.45e12,并在#处停止,将它作为下一个输入字符。然后把字符序列-13.45e12转换为相应的浮点数值,并将该值存储在目标浮点型变量中。

%s模式时,scanf()会读取-13.45e12#,并在空格处停止,将这个空格作为下一个输入字符。然后把这10个字符的字符代码存储到目标字符数组中,并在结尾附加一个空字符。

%c模式时,scanf()会读取并存储第一个字符,在这里是一个空字符。

printf()的返回值是当前次输出的字符个数( 一个字节的标准)。


2>getchar() 和 putchar()//单个字符的输入和输出

getchar()每次读取一个字符。如控制台输入jigf按下回车键时,仅读取j

getchar()多用于逐个读取字符,一般使用行缓冲。如:

while((ch=getchar())!='\n')
{
    ……
}
当键盘输入一段字符并最后按下回车键后,getchar()开始从j键盘缓冲区逐个读取并赋予ch,

putchar()每次打印一个字符,括号中的参数可以是数字,字符型变量,单引号引起来的字符,打印结果均为参数对应的字符。

返回值:(1)当输出正确时,返回输出字符转换为的unsigned int 值;(2)当输出错误时,返回EOF文件结束符。



3>gets() puts()//字符串的输入和输出

gets()用于字符串的读取,使用行缓冲,从键盘输入一段字符并下回车键时,开始从键盘缓冲区读取,并丢弃换行符\n,自动添加空字符\0。gets()的缺点是当输入的字符数超过了用来存放的字符型数组的大小,就会溢出到相邻的内存中。

puts()用于字符串的输出,并于结尾自动添加换行符\n。


4>fopen() fclose()

fopen()用于打开文件,有两个参数,第一个是要打开的文件名,更确切地说是包含该文件名的字符串的地址;第二个是用于指定文件打开模式的一个字符串。函数的返回值是一个文件指针,该指针用于其他函数(例如fgets()等)操作指定的文件。(示范见于下面其它文件操作函数的例子代码)

fopen()的模式参数列表:

"r"打开一个文本文件,可以读取文件
"w"打开一个文本文件,可以写入文件,先将文件长度截为0,如果文件不存在则先创建之
"a"打开一个文本文件,可以写入文件,向已有的文件尾部追加内容,如果该文件不存在则先创建之
"r+"打开一个文本文件,可以进行更新(读取和写入)文件
"w+"打开一个文本文件,可以进行更新(读取和写入)文件,如果文件存在则先将其长度截为0,如果文件不存在则先创建之
"a+"打开一个文本文件,可以进行更新(读取和写入)文件,如果该文件存在则先将其长度截为0,如果文件不存在则先创建之
"rb","wb","ab",
"rb+","wb+","ab+",
"r+b","w+b","a+b"
与前面的模式相似,只是使用二进制模式而非文本模式打开文件

fclose(fp)用于关闭由指针fp指定的文件。

5>fgets()和  fputs()//偏向于向文件读取和输出字符串,但同样可以选择从键盘读取和向屏幕输出


fgets()要接受三个参数,当如下面这样使用时,其作用和gets()几乎一样,不同的是它并不丢弃换行符\n而是读取并存储它:

char name[8];
puts("请输入你的名字:");
fgets(name,8,stdin);//8限定最多读取7个字符或者读完一个换行符为止,stdin表示从键盘上读取数据


fputs()与上面对应,同样接受三个参数,当如下面这样使用时,其效果与puts()几乎一样,但它不会自动添加换行符\n:

char name[]={"司马光"};
fputs(name,6,stdout);//参数6控制输出字符,stdout表示输出至屏幕

当它们对文件进行操作的示例:

char ch [500];
FILE * fp=fopen("D:\\88.txt","r");
fgets(ch,strlen(ch)+1,fp);//从文件88.txt读取并存储至ch中
fclose(fp);


char ch[]={"Noting is impossible to a willing heart !"};
FILE * fp=fopen("D:\\88.txt","w");
fputs(ch,strlen(ch),fp);//把ch中的字符输出至文件88.txt中
fclose(fp);

fgets()返回值

fputs()返回值>=0表示写入成功,返回值=-1(EOF)表示写入失败

6>fscanf() fprintf()//偏向于操作文件的、支持格式控制符的输入输出函数

fscanf()/ fprintf()的使用与fgets()/fputs()类似,不过前者可以用格式符控制字符格式:

fscanf(char *,%s,stdin);
fprintf(char *,%s,stdout);


fscanf(char *,%s,FILE *);
fprintf(char *,%s,FILE *);

7>fread()fwrite()//文件的写入和读取(二进制模式)

fread()用于从文件中读取数据,fwrite()用于向文件中写入数据:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
	//读取某盘目录下的文件的内容,写入一个新建的文件
	char ch[88];//用来暂时存放读取的数据
	FILE*fp1;
	FILE*fp2;
	//文件指针指向具体文件
	if ((fp1 = fopen("D:\\88.txt", "r")) == NULL)
	{
		fprintf(stderr, "文件读取失败!");
		exit(1);
	}
	
	if ((fp2 = fopen("D:\\99.txt", "w")) == NULL)
	{
		fprintf(stderr, "文件写入失败!");
		exit(2);
	}
	fread(ch, 1, sizeof(ch), fp1);//把文件指针fp1指向的文件中的内容读取,并存字符数组ch中
	puts(ch);
	fclose(fp1);

	fwrite(ch, 1, sizeof(ch), fp2);//把字符数组ch中的内容写入文件指针fp2所指的文件中
	fclose(fp2);

	system("pause");
	return 0;
}

8>fseek()ftell()

9>fgetpos()fsetpos()

10>int ungetc(int c,FILE * FP)

11>int fflush(FILE * fp)

12>setvbuf()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值