读《C和指针》笔记摘要【6】
2010-04-09
第十五章 输入/输出函数
1、错误报告
perror函数 void perror( char const *message);
2、终止执行
void exit( int status ); 原型定义于stdlib.h
其中status参数返回给操作系统,用于提示程序是否正常完成,这个值和main函数返回的整型状态值相同,预定义符号EXIT_SUCESS和EXIT_FAILURE分别提示程序的终止是成功还是失败;
3、对C语言而言,所有的I/O操作知识简单地从程序移进或移出字节的事情,毫不惊奇的是,这种字节流便称为流,程序只关心创建正确的输出字节数据,以及正确的解释从输入读取的字节数据,特定I/O设备的细节对程序员是隐藏的;
4、绝大多数是完全缓冲的,这就意味着“读取”和“写入”实际上时从一块称为缓冲区德内存区域来回复制数据;
5、在进行程序调试时,在每个调试的printf函数之后立即调用fflush函数,迫使缓冲区的数据立即写入,不管它是否已满;
例如:printf( "something or other" );
fflush( stdout );
6、文本流
流分为文本流和二进制流两种,文本流的有些特性可能因系统不同而不同;
7、标准C程序运行时至少提供三种流——标准输入,标准输出,标准出错,即:stdin, stdout, stderr;他们都是只想一个FILE结构的指针;
8、标准I/O常量
EOF所选择的实际值比一个字符要多几位,这是为了避免二进制值被错误地解释为EOF;
9、打开流
r, w, 和 a 开头,分别表示打开的流用于读取,写入还是添加;如果以读方式打开,则文件必须存在,而其余的方式文件可存在,可不存在,不存在将创建;
10、如果在mode中添加“a+”这种方式的话,表示该文件打开用于更新,但当你已经从该文件读入了一些数据,如果你要开始向他写入数据时,你必须先调用其中一个文件定位函数(fseek, fsetpos, rewind),在你向文件写入数据后,你又想读的话,那么又要调用fflush或文件定位函数之一;
11、freopen函数用于打开(或重新打开)一个特定的文件流
FILE * freopen( char const *filename, char const *mode, FILE *stream );
12、关闭流
fclose函数,对于输入流,fclose函数在文件关闭之前刷新缓冲区,如果它执行成功,fclose返回零值,否则返回EOF;
13、字符I/O
① int fgetc( FILE *stream );
② int getc( FILE *stream );
③ int getchar( );
这些都用于读取字符,但他们都返回一个
相关文档:
c/c++void及void指针类型
1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。
2.void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指 ......
一个很简洁的算法:
void Reverse(char s[])
{
for(int i = 0, j = strlen(s) - 1; i < j; ++i, --j) {
char c = s[i];
s[i] = s[j];
s[j] = c;
& ......
1、选择合适的算法和数据结构
选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
在许多 ......
C++的实现
#include<fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream logTest("foo.log");
streambuf *oldbuf = cout.rdbuf(logTest.rdbuf());
cout << "输出 ......
也是中软笔试的算法题,当时并不知道叫杨辉三角,唉。N年不用了,还得再拾起,为了那个梦。
#include <stdio.h>
void main()
{
int a[50][50];
int i,j,n;
printf("Please input Number:");
scanf("%d",&n);
  ......