C标准库源码解剖(13):输入输出函数stdio.h
C标准中的I/O库是一个比较庞大的库,实现也比较复杂。显然I/O库的实现是依赖于操作系统的,不同的系统上I/O库的实现机理是不一样的。glibc中,I/O库的核心实现在libio目录下。有4个头文件libio.h, iolibio.h, libioP.h, strfile.h, stdio.h,其中stdio.h是导出的标准C头文件,其余都是内部实现。这里并不打算解剖整个I/O库的源代码(那样可能一本书也说不完),只是概述性的介绍一下它的轮廓和所有标准接口的功能。我们学习I/O库也是为了能在实践中应用它,因此因此对C标准中所有的I/O接口要有个全面的了解。
输入/输出函数主要在stdio.h中,对应的宽字符版本在wchar.h中,下面列出标准C中定义的所有接口:
1、相关类型和常量:FILE、EOF在stdio.h中;wchar_t、wint_t、WEOF、WCHAR_MAX、WCHAR _MIN等在wchar.h中定义。size_t和NULL在stdio.h, wchar.h和stddef.h均会定义,同时使用其中的多个头文件是无害的。
2、fopen,fclose,fflush,frepoen,fwide,FOPEN_MAX,FILENAME_MAX:打开文件并返回数据流、关闭文件、清空数据流的缓冲区、将文件重新关联到一个数据流、fwide在wchar.h中用于设置与测试流定向、可以同时打开的数据流最大个数、文件名的最大长度。
文件访问方式:”r”、”w”、”a”、”r+”、”w+”、”a+”,所有访问方式后面都可以加上字母b,表示数据流保存二进制数据,而不是字符数据。
3、setvbuf,setbuf,BUFSIZ,_IOFBF,_IOLBF,_IONBF:设置数据流的缓冲区、BUFSIZ缓冲区的默认长度、后面三个是缓冲模式,为数完全缓冲、行缓冲(写入换行符或缓冲区满时刷新缓冲区)、数据流不缓冲。
4、stdin,stdout,stderr:标准输入流、输出流、错误流。除stderr之外,另外两个数据流都缓冲。C语言程序执行时,会预先打开这3种文本流。
5、fseek,ftell,rewind,fgetops,fsetpos:设置流的读写位置、返回流的当前读写位置、将流的位置恢复到开头、fgetpos/fsetpos用于获取或设置流的位置,其值放在fpos_t类型的参数中。定位码有SEEK_SET, SEEK_CUR,SEEK_END。
6、fgetc,fgetwc,getc,getwc,getchar,getwchar,ungetc,ungetwc:从流中读取下一个字符并作为int类型的值返回、getchar则从标准输入流中
相关文档:
这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......
最近在开发中,对常量参与运算时候,出了几个问题,特记录如下:
1.例子一(KEIL-51)
unsigned char recsum,xorsum;
recsum == 0xFF;
xorsum == 0x00;
if(recsum != (xorsum-1)) //这时候不相等
if(recsum != (unsigned ch ......
1、安装基础类库和man帮助文档等
sudo apt-get install build-essential sun-java6-jdk debian-keyring g++-multilib g++-4.2-multilib gcc-4.2-doc libstdc++6-4.3-dbg equivs glibc-doc manpages-dev libstdc++6-4.3-doc diff-doc binfmt-support sun-java6-source manpages manpages-posix manpages-posix- ......
这个提法有点怪异,但还是常常出现:
char *p = "abcd";
和
string str = "abcdefg";
第一个叫做C风格的字符串,原因是有null作为结尾; 第二个为C++风格的, 不是以null结尾.
实质上: C风格的字符串是:
char[] pArr = {'a', 'b', 'c', 'd', '\0'};
这样决定了处理方式的不同 ......
和在IDE中编译相比,命令行模式编译速度更快,并可以避免被IDE产生的一些附加信息所干扰。本文将介绍微软C/C++编译器命令行模式设定和用法。
1、设置环境变量:
PATH=C:\Program Files\Microsoft Visual Studio 8\VC\bin
INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\include
LIB=C:\Program File ......