C/C++常用IO函数
来源:互联网 发布:windows历代系统 编辑:程序博客网 时间:2024/05/22 22:45
最近老在这方面吃亏,这次好好补一下。
C I/O
1.fopen、fclose、freopen、feof
fopen:
algorithm:
#include<stdio.h>
FILE * fopen(const char * fname,const char * mode);
fopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL.mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等).
Mode(方式)意义"r"打开一个用于读取的文本文件"w"创建一个用于写入的文本文件"a"附加到一个文本文件"rb"打开一个用于读取的二进制文件"wb"创建一个用于写入的二进制文件"ab"附加到一个二进制文件"r+"打开一个用于读/写的文本文件"w+"创建一个用于读/写的文本文件"a+"打开一个用于读/写的文本文件"rb+"打开一个用于读/写的二进制文件"wb+"创建一个用于读/写的二进制文件"ab+"打开一个用于读/写的二进制文件
示例:
char ch; FILE *input = fopen( "stuff", "r" ); ch = getc( input );
fclose:
algorithm:
#include<stdio.h>
int fclose(FILE * stream);
函数fclose()关闭给出的文件流, 释放已关联到流的所有缓冲区. fclose()执行成功时返回0,否则返回EOF.
freopen:
algorithm:
#include <stdio.h>
FILE *freopen( const char *fname, const char *mode, FILE *stream );
示例:
#include <stdio.h> int main() { int a,b; freopen("debug\\in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中 while(scanf("%d %d",&a,&b)!=EOF) printf("%d\n",a+b); fclose(stdin);//关闭文件 fclose(stdout);//关闭文件 return 0; }
feof:
algorithm:
#include <stdio.h>
int feof( FILE *stream );
函数feof()在到达给出的文件流的文件尾时返回一个非零值.
2.fread、fwrite
fread:
algorithm:
#include<stdio.h>
int fread(void * buffer,size_t size,size_t num,FILE * stream);
函数fread()读取 num个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量...
fwrite: algorithm:
#include <stdio.h>
int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
fwrite()函数从数组buffer(缓冲区)中, 写count个大小为size(大小)的对象到stream(流)指定的流. 返回值是已写的对象的数量.
3.scanf、fscanf、sscanf、printf、fprintf、sprintf
scanf:
algorithm:
#include <stdio.h>
int scanf( const char *format, ... );
scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数.format(格式)字符串由控制字符,空白字符和非空白字符组成. 控制字符以一个%符号开始,如下:
控制字符说明%c一个单一的字符%d一个十进制整数%i一个整数%e, %f, %g一个浮点数%o一个八进制数%s一个字符串%x一个十六进制数%p一个指针%n一个等于读取字符数量的整数%u一个无符号整数%[]一个字符集%%一个精度符号scanf()读取匹配format(格式)字符串的输入. 当读取到一个控制字符, 它把值放置到下一个变量. 空白(tabs, 空格等等)会跳过. 非空白字符和输入匹配, 然后丢弃. 如果是一个在%符号和控制符间的数量, 那么只有指定数量的字符转换到变量中. 如果scanf()遇到一个字符集(用%[]控制字符表示), 那么在括号中的任意字符都会读取到变量中. scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF.
fscanf:
algorithm:
#include <stdio.h>
int fscanf( FILE *stream, const char *format, ... );
函数fscanf()以scanf()的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.
示例:
sscanf:
algorithm:
#include <stdio.h>
int sscanf( const char *buffer, const char *format, ... );
函数sscanf()和scanf()类似, 只是输入从buffer(缓冲区)中读取. 成功则返回参数数目,失败则返回0,错误原因存于errno中。
示例:
#include<stdio.h>main(){ int i; unsigned int j; char input[ ]="10 0x1b aaaaaaaa bbbbbbbb"; char s[5]; sscanf(input,"%d %x %5[a-z] %*s %f",&i,&j,s,s); printf("%d %d %s\n",i,j,s);}printf:
#include <stdio.h>
int printf( const char *format, ... );
printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.printf()的返回值是打印的字符数,如果发生错误则返回一个负值.
fprintf:
algorithm:
#include <stdio.h>
int fprintf( FILE *stream, const char *format, ... );
fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.
示例:
char name[20] = "Mary";
FILE * out;
out = fopen( "output.txt", "w" );
if( out != NULL )
fprintf( out, "Hello %s\n", name );
algorithm:
#include <stdio.h>
int sprintf( char *buffer, const char *format, ... );
sprintf()函数和printf()类似, 只是把输出发送到buffer(缓冲区)中.返回值是写入的字符数量.
示例:
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
4.getchar、getc、fgetc、putchar、putc、fputc
getchar:
algorithm:
#include <stdio.h>
int getchar( void );
getchar()函数从STDIN(标准输入)获取并返回下一个字符,如果到达文件尾返回EOF.
getc:
algorithm:
#include <stdio.h>
int getc( FILE *stream );
getc()函数从stream(流)获取并返回下一个字符,如果到达文件尾返回EOF.
fgetc:
algorithm:
#include <stdio.h>
int fgetc( FILE *stream );
fgetc()函数返回来自stream(流)中的下一个字符,如果到达文件尾或者发生错误时返回EOF.fgetc和getc最大的区别在前者是函数,后者是宏,getc由fgetc通过宏实现,调用的时候注意参数stream不能是有副作用的表达式
putchar:
algorithm:
#include <stdio.h>
int putchar( int ch );
putchar()函数把ch写到STDOUT(标准输出).putchar()的返回值是被写的字符, 发生错误时返回EOF.
putc:
algorithm:
#include <stdio.h>
int putc( int ch, FILE *stream );
putc()函数把字符ch写到stream(流)中. 返回值是写入的字符, 发生错误时返回EOF.
fputc:
algorithm:
#include <stdio.h>
int fputc( int ch, FILE *stream );
函数fputc()把给出的字符ch写到给出的输出流. 返回值是字符, 发生错误时返回值是EOF.
5.gets、fgets、puts、fputs
gets:
algorithm:
#include <stdio.h>
char *gets( char *str );
gets()函数从STDIN(标准输入)读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)或到达EOF. 新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL。
fgets:
algorithm:
#include <stdio.h>
char *fgets( char *str, int num, FILE *stream );
函数fgets()从给出的文件流中读取[num - 1]个字符并且把它们转储到str(字符串)中. fgets()在到达行末时停止,在这种情况下,str(字符串)将会被一个新行符结束. 如果fgets()达到[num - 1]个字符或者遇到EOF,str(字符串)将会以null结束.fgets()成功时返回str(字符串),失败时返回NULL.
puts:
algorithm:
#include <stdio.h>
int puts( char *str );
函数puts()把str(字符串)写到STDOUT(标准输出)上. puts() 成功时返回非负值, 失败时返回EOF.
fputs:
algorithm:
#include <stdio.h>
int fputs( const char *str, FILE *stream );
fputs()函数把str(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF.
6.fseek、ftell、rewind、fgetpos、fsetpos
fseek:
algorithm:
#include <stdio.h>
int fseek( FILE *stream, long offset, int origin );
函数设置文件指针stream的位置。如果执行成功,stream将指向以origin为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。fseek()成功时返回0,失败时返回非零。origin的值应该是下列值其中之一(在stdio.h中定义):
名称说明SEEK_SET从文件的开始处开始搜索SEEK_CUR从当前位置开始搜索SEEK_END从文件的结束处开始搜索
ftell:
algorithm:
#include <stdio.h>
long ftell( FILE *stream );
ftell()函数返回stream(流)当前的文件位置,如果发生错误返回-1.
rewind:
algorithm:
#include <stdio.h>
void rewind( FILE *stream );
函数rewind()把文件指针移到由stream(流)指定的开始处, 同时清除和流相关的错误和EOF标记
fgetpos:
algorithm:
#include <stdio.h>
int fgetpos(FILE * stream,fpos_t * position);
fgetpos()函数保存给出的文件流(stream)的位置指针到给出的位置变量(position)中. position变量是fpos_t类型的(它在stdio.h中定义)并且是可以控制在FILE中每个可能的位置对象. fgetpos()执行成功时返回0,失败时返回一个非零值.
fsetpos:
algorithm:
#include <stdio.h>
int fsetpos( FILE *stream, const fpos_t *position );
fsetpos()函数把给出的流的位置指针移到由position对象指定的位置. fpos_t是在stdio.h中定义的. fsetpos()执行成功返回0,失败时返回非零.
Cpp I/O
1.cout、cerr、clog、cin
algorithm:
#include <iostream>
cout, ostream类的一个对象,可以将数据显示在标准输出设备上.
cerr, ostream类的另一个对象,它无缓冲地向标准错误输出设备输出数据.
clog, 类似cerr,但是它使用缓冲输出.
cin, istream类的一个对象,它用于从标准输入设备读取数据
2.open、close、eof
open:
algorithm:
void open( const char *filename );
void open( const char *filename, openmode mode );
函数open()用于文件流。它打开filename 并将其与当前的流相关联。可以选择的模式有:
close:
algorithm:
void close();
函数关闭相关的文件流。
eof:
algorithm:
bool eof();
如果到达相关联的输入文件的末尾,eof()函数返回true,否则返回false。例如:
char ch; ifstream fin( "temp.txt" ); while( !fin.eof() ) { fin >> ch; cout << ch; } fin.close();
3.fill、precision、width
fill:
algorithm:
char fill();
char fill( char ch );
函数fill()可以返回当前填充字符,或者设置当前填充字符为ch 。填充字符被定义为用来填充字符,当一个数字比较指定宽度width小时。默认的填充字符是空格。
precision:
algorithm:
streamsize precision();
streamsize precision( streamsize p );
precision()函数设置或返回当前要被显示的浮点变量的位数。例如,下面的代码:
float num = 314.15926535; cout.precision( 5 ); cout << num;
displays
314.16
width:
algorithm:
int width();
int width( int w );
函数 width()返回当前的宽度。可选择参数w用于设定宽度大小。宽度是指每一次输出中显示的字符的最小数目。例如:
cout.width( 5 ); cout << "2";
displays
2
(在一个'2'的后面紧跟着四个空格)
4.get、put、read、write
get:
algorithm:
int get();
istream &get( char &ch );
istream &get( char *buffer, streamsize num );
istream &get( char *buffer, streamsize num, char delim );
istream &get( streambuf &buffer );
istream &get( streambuf &buffer, char delim );
get()函数被用于输入流,和以下这些:
- 读入一个字符并返回它的值,
- 读入一个字符并把它存储在ch,
- 读取字符到buffer直到num - 1个字符被读入, 或者碰到EOF或换行标志,
- 读取字符到buffer直到已读入num - 1 个字符,或者碰到EOF或delim(delim直到下一次不会被读取),
- 读取字符到buffer中,直到碰到换行或EOF,
- 或是读取字符到buffer中,直到碰到换行,EOF或delim。(相反, delim直到下一个get()不会被读取 ).
char ch; ifstream fin( "temp.txt" ); while( fin.get(ch) ) cout << ch; fin.close();put:
algorithm:
ostream &put( char ch );函数put()用于输出流,并把字符ch写入流中。
read:
algorithm:
istream &read( char *buffer, streamsize num );
函数read()用于输入流,在将字符放入buffer 之前从流中读取num 个字节。如果碰到EOF,read()中止,丢弃不论多少个字节已经放入
write:
algorithm:
ostream &write( const char *buffer, streamsize num );
write()函数用于输出流,从buffer中写num个字节到当前输出流中。
5.getline、gcount
getline:
algorithm:
#include<string>包含getline()
istream &getline( char *buffer, streamsize num );
istream &getline( char *buffer, streamsize num, char delim );
getline()函数用于输入流,读取字符到buffer中,直到下列情况发生:
- num - 1个字符已经读入,
- 碰到一个换行标志,
- 碰到一个EOF,
- 或者,任意地读入,直到读到字符delim。delim字符不会被放入buffer中。
gcount:
algorithm:
streamsize gcount();
函数gcount()被用于输入流,并返回上一次输入操作被读入的字符的数目。
6.seekg、seekp、tellg、tellp
seekg:
algorithm:
istream &seekg( off_type offset, ios::seekdir origin );
istream &seekg( pos_type position );
函数seekg()用于输入流,并且它将重新设置"get"指针到当前流的从origin偏移offset个字节的位置上,或是置"get"指针在position位置。
seekp:
algorithm:
ostream &seekp( off_type offset, ios::seekdir origin );
ostream &seekp( pos_type position );
seekp()函数用于输出流,但在其它方面和seekg()很类似。
tellg:
algorithm:
pos_type tellg();
tellg()函数用于输入流,并返回流中"get"指针的当前位置
tellp:
algorithm:
pos_type tellp();
tellp()函数用于输出流中,并返回在流中当前"put"指针的位置。 例如,下面的代码显示了当一个文件指针写入一个流的时候的情形:
7.flags、setf、unsetf
flags:
algorithm:
fmtflags flags(); fmtflags flags( fmtflags f );flags()函数或者返回当前流的格式标志,或者为当前流设置标志为 f 。
setf:
algorithm:
fmtflags setf( fmtflags flags );
fmtflags setf( fmtflags flags, fmtflags needed );
函数setf()设置当前流的格式化标志为flags。可选标志needed 只允许flags标志和needed标志都被设置。返回值是前面设置的标志。
例如:
int number = 0x3FF; cout.setf( ios::dec ); cout << "Decimal: " << number << endl; cout.unsetf( ios::dec ); cout.setf( ios::hex ); cout << "Hexadecimal: " << number << endl;
提示,上面的代码和下面的代码的功能是一致的:
int number = 0x3FF; cout << "Decimal: " << number << endl << hex << "Hexadecimal: " << number << dec << endl;
unsetf:
algorithm:
void unsetf( fmtflags flags );函数unsetf()用于清除与当前流相关的给定的标志flags
- C/C++常用IO函数
- c语言IO函数
- C语言中一些常用IO函数的总结
- c的IO字符串函数
- C的文件IO函数
- C#.net常用函数
- c#.net常用函数
- c 常用函数说明
- Linux 常用C函数
- C常用函数
- C/C++常用函数
- linux 常用c函数
- C 常用函数解析
- C 常用字符串函数
- C# 常用字符串函数
- c常用字符串函数
- c常用函数实现
- 常用c 函数
- 分辨率像素android手机屏幕分辨率 及 sp dip(dp) px 区别 及高中低分辨率时处理
- 那些帮助你成为优秀前端工程师的讲座——《性能篇》
- 屏蔽敏感词汇&KMP
- 23_传智播客Android视频教程_网络通信之网络图片查看器
- 对象的序列化和反序列化及其实现和使用
- C/C++常用IO函数
- java程序优化一些实践
- hdu2222 Keywords Search
- 【<私活案例1>】 某游戏网首页PS设计和Html静态效果源码
- poj--1470--Closest Common Ancestors--LCA
- 入门视频采集与处理(学会分析YUV数据)
- 微信 一亿用户背后架构秘密
- 为什么要选择UniDAC?
- UVA 10271 - Chopsticks