易截截图软件、单文件、免安装、纯绿色、仅160KB

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 C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......

C中常量参与运算的问题

最近在开发中,对常量参与运算时候,出了几个问题,特记录如下:
1.例子一(KEIL-51)
   unsigned char recsum,xorsum;
   recsum == 0xFF; 
   xorsum == 0x00;
   if(recsum != (xorsum-1))  //这时候不相等
   if(recsum != (unsigned ch ......

安装ubuntu下的c和java开发环境基础库

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- ......

字符串的两种不同风格: C++风格和C风格

这个提法有点怪异,但还是常常出现:
char *p = "abcd";

string str = "abcdefg";
第一个叫做C风格的字符串,原因是有null作为结尾; 第二个为C++风格的, 不是以null结尾.
实质上: C风格的字符串是:
char[] pArr = {'a', 'b', 'c', 'd', '\0'};
这样决定了处理方式的不同 ......

C/C++编译器


和在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 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号