C++ 第七课 标准 C I/O
clearerr() | 清除错误 |
fclose() | 关闭一个文件 |
feof() | 如果到达文件尾(end-of-file)返回"True"(真) |
ferror() | 检查一个文件错误 |
fflush() | 书写输出缓存的内容 |
fgetc() | 从流获取一个字符 |
fgetpos() | 获取文件位置指针 |
fgets() | 从一个流获取一串字符 |
fopen() | 打开一个文件 |
fprintf() | 打印格式化的输出到一个文件 |
fputc() | 写一个字符到一个文件 |
fputs() | 写一个字符串到一个文件 |
fread() | 从一个文件读取 |
freopen() | 用一个不同的名称打开一个存在的流 |
fscanf() | 从一个文件读取一个格式化的输入 |
fseek() | 在文件中移动到一个指定的位置 |
fsetpos() | 在一个文件中移动到一个指定的位置 |
ftell() | 返回当前文件的位置指针 |
fwrite() | 写入一个文件 |
getc() | 从一个文件读取一个字符 |
getchar() | 从STDIN(标准输入)读取一个字符 |
gets() | 从STDIN(标准输入)读取一个字符串 |
perror() | 显示当前错误的一个字符串版本到STDERR(标准错误输出) |
printf() | 写格式化的输出到STDOUT(标准输出) |
putc() | 写一个字符到一个流 |
putchar() | 写一个字符到STDOUT(标准输出) |
puts() | 写一个字符串到STDOUT(标准输出) |
remove() | 清除一个文件 |
rename() | 重命名一个文件 |
rewind() | 移动文件位置指针到一个文件的开始处 |
scanf() | 从STDIN(标准输入)读取格式化输入 |
setbuf() | 设置一个指定流的缓冲区 |
setvbuf() | 设置一个指定流的缓冲区和大小 |
sprintf() | 写格式化的输出到缓冲区 |
sscanf() | 从一个缓冲区读取格式化的输入 |
tmpfile() | 返回一个到一个临时文件的指针 |
tmpnam() | 返回一个独特的文件名 |
ungetc() | 把一个字符放回一个流 |
vprintf, vfprintf, vsprintf | 写用参数列表格式化输出 |
clearerr
语法:
#include <stdio.h> |
clearerr函数重置错误标记和给出的流的EOF指针. 当发生错误时,你可以使用perror()判断实际上发生了何种错误.
相关主题:
feof(), ferror(), 和perror().
fclose
语法:
#include <stdio.h> |
函数fclose()关闭给出的文件流, 释放已关联到流的所有缓冲区. fclose()执行成功时返回0,否则返回EOF.
相关主题:
fopen(), freopen(), 和fflush().
feof
语法:
#include <stdio.h> |
函数feof()在到达给出的文件流的文件尾时返回一个非零值.
相关主题:
clearerr(), ferror(), perror(), putc()和 getc().
ferror
语法:
#include <stdio.h> |
ferror()函数检查stream(流)中的错误, 如果没发生错误返回0,否则返回非零. 如果发生错误, 使用perror()检测发生什么错误.
相关主题:
clearerr(), feof(), perror(),
fflush
语法:
#include <stdio.h> |
如果给出的文件流是一个输出流,那么fflush()把输出到缓冲区的内容写入文件. 如果给出的文件流是输入类型的,那么fflush()会清除输入缓冲区. fflush()在调试时很实用,特别是对于在程序中输出到屏幕前发生错误片段时. 直接调用 fflush( STDOUT )输出可以保证你的调试输出可以在正确的时间输出.
printf( "Before first call\n" );
fflush( STDOUT );
shady_function();
printf( "Before second call\n" );
fflush( STDOUT );
dangerous_dereference();
相关主题:
fclose(), fopen(), fread(), fwrite(), getc(), 和putc().
fgetc
语法:
#include <stdio.h> |
fgetc()函数返回来自stream(流)中的下一个字符,如果到达文件尾或者发生错误时返回EOF.
相关主题:
fputc(), getc(), putc(), 和fopen().
fgetpos
语法:
#include <stdio.h> |
fgetpos()函数保存给出的文件流(stream)的位置指针到给出的位置变量(position)中. position变量是fpos_t类型的(它在stdio.h中定义)并且是可以控制在FILE中每个可能的位置对象. fgetpos()执行成功时返回0,失败时返回一个非零值.
相关主题:
fsetpos(), fseek()和 ftell().
fgets
语法:
#include <stdio.h> |
函数fgets()从给出的文件流中读取[num - 1]个字符并且把它们转储到str(字符串)中. fgets()在到达行末时停止,在这种情况下,str(字符串)将会被一个新行符结束. 如果fgets()达到[num - 1]个字符或者遇到EOF, str(字符串)将会以null结束.fgets()成功时返回str(字符串),失败时返回NULL.
fopen
语法:
#include <stdio.h> |
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 );
fprintf
语法:
#include <stdio.h> |
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 );
fputc
语法:
#include <stdio.h> |
函数fputc()把给出的字符ch写到给出的输出流. 返回值是字符, 发生错误时返回值是EOF.
相关主题:
fgetc(), fopen(), fprintf(), fread(), 和fwrite().
fputs
语法:
#include <stdio.h> |
fputs()函数把str(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF.
相关主题:
fgets(), gets(), puts(), fprintf(), 和fscanf().
fread
语法:
#include <stdio.h> |
函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量...
相关主题:
fwrite(), fopen(),fscanf(), fgetc()和getc().
freopen
语法:
#include <stdio.h> |
freopen()函数常用于再分配一个以存在的流给一个不同的文件和方式(mode).在调用本函数后,给出的文件流将会用mode(方式)指定的访问模式引用fname(文件名). freopen()的返回值是新的文件流,发生错误时返回NULL.
fscanf
语法:
#include <stdio.h> |
函数fscanf()以scanf()的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.
fseek
语法:
#include <stdio.h> |
函数fseek()为给出的流设置位置数据. origin的值应该是下列值其中之一(在stdio.h中定义):
名称 | 说明 |
SEEK_SET | 从文件的开始处开始搜索 |
SEEK_CUR | 从当前位置开始搜索 |
SEEK_END | 从文件的结束处开始搜索 |
fseek()成功时返回0,失败时返回非零. 你可以使用fseek()移动超过一个文件,但是不能在开始处之前. 使用fseek()清除关联到流的EOF标记.
相关主题:
ftell(),
rewind(), fopen(), fgetpos()和 fsetpos().
fsetpos
语法:
#include <stdio.h> |
fsetpos()函数把给出的流的位置指针移到由position对象指定的位置. fpos_t是在stdio.h中定义的. fsetpos()执行成功返回0,失败时返回非零.
相关主题:
fgetpos(), fseek()和 ftell().
ftell
语法:
#include <stdio.h> |
ftell()函数返回stream(流)当前的文件位置,如果发生错误返回-1.
fwrite
语法:
#include <stdio.h> |
fwrite()函数从数组buffer(缓冲区)中, 写count个大小为size(大小)的对象到stream(流)指定的流. 返回值是已写的对象的数量.
相关主题:
fread(), fscanf(), getc()和 fgetc().
getc
语法:
#include <stdio.h> |
getc()函数从stream(流)获取并返回下一个字符,如果到达文件尾返回EOF. getc()和fgetc()是一样的. 例如:
char ch;
FILE *input = fopen( "stuff", "r" ); ch = getc( input );
while( ch != EOF ) {
printf( "%c", ch );
ch = getc( input );
}
相关主题:
fputc(), fgetc(), putc()和 fopen().
getchar
语法:
#include <stdio.h> |
getchar()函数从STDIN(标准输入)获取并返回下一个字符,如果到达文件尾返回EOF.
相关主题:
fputc(), fgetc(), putc()和 fopen().
gets
语法:
#include <stdio.h> |
gets()函数从STDIN(标准输入)读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)或到达EOF. 新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL.
相关主题:
fputs(), fgetc(),fgets()和 puts().
perror
语法:
#include <stdio.h> |
perror()函数打印str(字符串)和一个相应的执行定义的错误消息到全局变量errno中.
printf
语法:
#include <stdio.h> |
printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.
字符串format(格式)由两类项目组成 - 显示到屏幕上的字符和定义printf()显示的其它参数. 基本上, 你可以指定一个包含文本在内的format(格式)字符串,也可以是映射到printf()其它参数的"特殊"字符. 例如本代码
char name[20] = "Bob";
int age = 21;
printf( "Hello %s, you are %d years old\n", name, age );
显示下列输出:
Hello Bob, you are 21 years old
%s 表示, "在这里插入首个参数,一个字符串." %d 表示第二个参数(一个整数)应该放置在那里. 不同的"%-codes"表示不同的变量类型, 也可以限制变量的长度.
Code | 格式 |
%c | 字符 |
%d | 带符号整数 |
%i | 带符号整数 |
%e | 科学计数法, 使用小写"e" |
%E | 科学计数法, 使用大写"E" |
%f | 浮点数 |
%g | 使用%e或%f中较短的一个 |
%G | 使用%E或%f中较短的一个 |
%o | 八进制 |
%s | 一串字符 |
%u | 无符号整数 |
%x | 无符号十六进制数, 用小写字母 |
%X | 无符号十六进制数, 用大写字母 |
%p | 一个指针 |
%n | 参数应该是一个指向一个整数的指针 指向的是字符数放置的位置 |
%% | 一个'%'符号 |
一个位于一个%和格式化命令间的整数担当着一个最小字段宽度说明符,并且加上足够多的空格或0使输出足够长. 如果你想填充0,在最小字段宽度说明符前放置0.
你可以使用一个精度修饰符,它可以根据使用的格式代码而有不同的含义.
- 用%e, %E和 %f,精度修饰符让你指定想要的小数位数. 例如,
%12.6f
将会至少显示12位数字,并带有6位小数的浮点数.
- 用%g和 %G, 精度修饰符决定显示的有效数的位数最大值.
- 用%s,精度修饰符简单的表示一个最大的最大长度, 以补充句点前的最小字段长度.
所有的printf()的输出都是右对齐的,除非你在%符号后放置了负号. 例如,
%-12.4f
将会显示12位字符,4位小数位的浮点数并且左对齐. 你可以修改带字母l和h%d, %i, %o, %u和 %x 等类型说明符指定长型和短型数据类型 (例如 %hd 表示一个短整数). %e, %f和 %g 类型说明符,可以在它们前面放置l指出跟随的是一个double. %g, %f和 %e 类型说明符可以置于字符'#'前保证出现小数点, 即使没有小数位. 带%x类型说明符的'#'字符的使用, 表示显示十六进制数时应该带'0x'前缀. 带%o类型说明符的'#'字符的使用, 表示显示八进制数时应该带一个'0'前缀.
你可以在输出字符串中包含 连续的Escape序列.
printf()的返回值是打印的字符数,如果发生错误则返回一个负值.
putc
语法:
#include <stdio.h> |
putc()函数把字符ch写到stream(流)中. 返回值是写入的字符, 发生错误时返回EOF. 例如:
char ch;
FILE *input;
input = fopen( "temp.cpp", "r" );
ch = getc( input );
while( ch != EOF ) {
printf( "%c", ch );
ch = getc( input );
}
显示"temp.cpp"的内容到屏幕.
相关主题:
fgetc(),
fputc(), getchar()和 putchar().
putchar
语法:
#include <stdio.h> |
putchar()函数把ch写到STDOUT(标准输出). 代码
putchar( ch );
和
putc( ch, STDOUT );
一样.
putchar()的返回值是被写的字符, 发生错误时返回EOF.
相关主题:
putc()
puts
语法:
#include <stdio.h> |
函数puts()把str(字符串)写到STDOUT(标准输出)上. puts() 成功时返回非负值, 失败时返回EOF.
相关主题:
putc(), gets()和 printf().
remove
语法:
#include <stdio.h> |
remove()函数删除由fname(文件名)指定的文件. remove()成功时返回0,如果发生错误返回非零.
相关主题:
rename()
rename
语法:
#include <stdio.h> |
函数rename()更改文件oldfname的名称为newfname. rename()成功时返回0,错误时返回非零.
相关主题:
remove()
rewind
语法:
#include <stdio.h> |
函数rewind()把文件指针移到由stream(流)指定的开始处, 同时清除和流相关的错误和EOF标记.
相关主题:
fseek()
scanf
语法:
#include <stdio.h> |
scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数. 它和printf()有点类似. format(格式)字符串由控制字符,空白字符和非空白字符组成. 控制字符以一个%符号开始,如下:
控制字符 | 说明 |
%c | 一个单一的字符 |
%d | 一个十进制整数 |
%i | 一个整数 |
%e, %f, %g | 一个浮点数 |
%o | 一个八进制数 |
%s | 一个字符串 |
%x | 一个十六进制数 |
%p | 一个指针 |
%n | 一个等于读取字符数量的整数 |
%u | 一个无符号整数 |
%[] | 一个字符集 |
%% | 一个精度符号 |
scanf()读取匹配format(格式)字符串的输入. 当读取到一个控制字符, 它把值放置到下一个变量. 空白(tabs, 空格等等)会跳过. 非空白字符和输入匹配, 然后丢弃. 如果是一个在%符号和控制符间的数量, 那么只有指定数量的字符转换到变量中. 如果scanf()遇到一个字符集(用%[]控制字符表示), 那么在括号中的任意字符都会读取到变量中. scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF.
setbuf
语法:
#include <stdio.h> |
setbuf()函数设置stream(流)使用buffer(缓冲区),如果buffer(缓冲区)是null,关闭缓冲. 如果使用非标准缓冲尺寸, 它应该由BUFSIZ字符决定长度.
相关主题:
fopen(), fclose(), setvbuf(),
setvbuf
语法:
#include <stdio.h> |
函数setvbuf()设置用于stream(流)的缓冲区到buffer(缓冲区),其大小为size(大小). mode(方式)可以是:
- _IOFBF, 表示完全缓冲
- _IOLBF, 表示线缓冲
- _IONBF, 表示无缓存
相关主题:
setbuf(),
sprintf
语法:
#include <stdio.h> |
sprintf()函数和printf()类似, 只是把输出发送到buffer(缓冲区)中.返回值是写入的字符数量. 例如:
char string[50];
int file_number = 0; sprintf( string, "file.%d", file_number );
file_number++;
output_file = fopen( string, "w" );
相关主题:
printf(), fsprintf(),
sscanf
语法:
#include <stdio.h> |
函数sscanf()和scanf()类似, 只是输入从buffer(缓冲区)中读取.
tmpfile
语法:
#include <stdio.h> |
函数tempfile()用一个独特的文件名打开一个临时文件,并返回一个到该文件的指针.如果发生错误则返回null.
相关主题:
tmpnam(),
tmpnam
语法:
#include <stdio.h> |
tmpnam()函数创建一个独特的文件名并保存在name中. tmpnam()最多可以调用TMP_MAX指定的次数.
相关主题:
tmpfile(),
ungetc
语法:
#include <stdio.h> |
函数ungetc()把字符ch放回到stream(流)中.
相关主题:
getc(),
vprintf, vfprintf和 vsprintf
语法:
#include <stdarg.h> |
这些函数和printf()非常相似, fprintf()和 sprintf()的不同在于参数列表是一个指向一系列参数的指针. va_list在STDARG.H中定义,并且也可以被va_arg()使用. 例如:
void error( char *fmt, ... ) {
va_list args; va_start( args, fmt );
fprintf( stderr, "Error: " );
vfprintf( stderr, fmt, args );
fprintf( stderr, "\n" );
va_end( args );
exit( 1 );
}
C++ 第七课 标准 C I/O的更多相关文章
- NeHe OpenGL教程 第七课:光照和键盘
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 【C语言探索之旅】 第二部分第七课:文件读写
内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...
- 红帽学习笔记[RHCSA] 第七课[网络配置相关]
第七课[网络配置相关] 在Vmware中添加网卡 编辑 -> 编辑虚拟网络 -> 添加网络->随便选择一个如VMnet2-> 选择仅主机模式 -> 勾掉使用本地DHCP服 ...
- Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer
原文:Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处 ...
- Kali Linux Web 渗透测试视频教程— 第七课 OpenVas
Kali Linux Web 渗透测试视频教程— 第七课 OpenVas 文/玄魂 视频教程地址:http://edu.51cto.com/course/course_id-1887.html 目录 ...
- 【C语言探索之旅】 第一部分第七课:循环语句
内容简介 1.课程大纲 2.第一部分第七课: 循环语句 3.第一部分第八课预告: 第一个C语言小游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编 ...
- 【Cocos游戏实战】功夫小子第七课之游戏主功能场景逻辑功能和暂停功能场景的分析和实现
CSDN的markdown编辑器是吃屎了么! !.什么玩意.!写了一半写不了东西还全没了,搞个毛线! 本节课的视频教程地址是:第七课在此 假设本教程有帮助到您,希望您能点击进去观看一下,并且如今注冊成 ...
- Python学习第七课
Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...
- [译]Quartz.NET 框架 教程(中文版)2.2.x 之第七课 触发监听器和作业任务监听器
第七课:触发监听器和作业任务监听器 监听器是在调度器中基于事件机制执行操作的对象.你大概可以猜到,触发监听器接收响应跟触发器有关的事件,作业任务监听器接收响应跟作业任务有关的事件. 跟触发器有关的事件 ...
随机推荐
- i386、i586、i686、noarch、x86_64
xxxxxxxxx.rpm <== RPM的格式,已经经过编译且包装完成的rpm文件. xxxxxx.src.rpm <== SRPM的格式,包含未编译的源代码信息. 例如rp-p ...
- Linux学习11-CentOS如何设置java环境变量
前言 之前用yum安装的java,现在想添加环境变量,yum安装的java路径在哪呢?如何找到安装的路径,把jdk添加到环境变量. 本篇详细讲解linux系统设置java环境变量 找到jdk路径 之前 ...
- Java 正则表达式格式化时间显示
/* * test.java * Version 1.0.0 * Created on 2017年12月16日 * Copyright ReYo.Cn */ package reyo.sdk.util ...
- JQuery攻略(三)数组与字符串
在上两章,JQuery攻略(一) 基础知识——选择器 与 DOM 和 JQuery攻略(二) Jquery手册 我们为后面的章节打好了基础,在这一章节中,我们继续. 在这一章节中,我们记录的是JQue ...
- [Android Security] 如何把java代码转换成smali代码
copy :https://www.cnblogs.com/gordon0918/p/5466514.html 1.概述 Smali是Android系统中Dalvik虚拟机指令语言,在apk逆向过程中 ...
- 最常使用Eclipse快捷键
一:编辑 alt+/:智能感知: alt+shift+s:出现代码块: ctrl+1:quick fix,同时还有简单的重构功能: ctrl+e:快速转换编辑器 ,这组快捷键将帮助你在打开的编辑器之间 ...
- TeXLive里面集成了CTeX,Lyx是一个编辑软件
TeXLive里面集成了CTeX,LaTeX是排版引擎,CTeX和TeXLive是发行版.LaTeX是毛坯房,CTeX和TeX Live是带精装的房子.CTeX 套装是一个个人作品,存在很多问题.这些 ...
- 图像质量评估(IQA)
图像质量评估函数的分类曾是一个比较有争议的话题,在2l世纪以前曾经有过 比较多的讨论.但是随着研究的深入和技术的广泛应用,研究人员对于图像质量 评估函数的分类有了统一的认识,即从实际应用中参考信息供给 ...
- 整合 Ext JS 和第三方类库
介绍 ExtJS提供了许多高度可定制化内置组件.如果它不在框架(framework)里面,你可以很容易的扩展这些类,或者浏览Sencha市场(Sencha Market) 寻找你可能需要的任何东西.那 ...
- 分析 Java heap dump工具之IBM HeapAnalyzer
IBM HeapAnalyzer是一款免费的JVM内存堆的图形分析工具,它可以有效的列举堆的内存使用状况,帮助分析Java内存泄漏的原因. 功能与MAT类似. 1.下载 https://www.ibm ...