2.5.3 使用CRT(C运行时期库)
在遥远的C语言时代,C语言就提供了丰富的函数库,如<stdio.h>,它即对应于标准输入/输出的功能库。
在C++(www.cppentry.com)中,这些C标准库得以保留,但C++(www.cppentry.com)不再赞成如下方式使用传统的C头文件:
- #include <stdlib.h>
-
- int i = rand();
C++(www.cppentry.com)鼓励使用<cstdlib>这样的形式替换".h"的写法:
- #include <cstdlib>
前缀c的含义在于这是一个C标准库。C标准库的内容会被C++(www.cppentry.com)同时置于全局名字空间和std名字空间,所以对随机函数rand()的调用也可以写成:
std::rand()
C标准库主要包括在表2-5所示的头文件中。
|
表2-5 C标准库包含的头文件< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
|
头文件 |
含义 |
|
<cassert> |
诊断库 |
|
<cctype> |
字符处理函数库 |
|
<cerrno> |
错误定义 |
|
<cfloat> |
浮点类型 |
|
<climits> |
整型数值的尺寸定义 |
|
<clocale> |
国际化库 |
|
<cmath> |
数学库 |
|
<csetjmp> |
跳转函数库 |
|
<csignal> |
信号处理库 |
|
<cstdarg> |
可变参数处理 |
|
<cstddef> |
标准定义库 |
|
<cstdio> |
标准输入、输出库 |
|
<cstdlib> |
标准工具库 |
|
<cstring> |
字符串函数库 |
|
<ctime> |
时间库 |
在<cstdlib>中其实就有操作文件的函数:
- FILE *fopen(
- const char* filename,
- const char* mode
- );
-
- int fclose(
- FILE* stream
- );
-
- int fprintf(
- FILE* stream,
- const char* format [, argument ]...
- );
-
- int fscanf(
- FILE* stream,
- const char* format [, argument ]...
- );
现在动手
接下来,我们体验如何采用CRT库函数来操作文件。
【程序 2-13】使用CRT输出茴字
- 01 #include "stdafx.h"
- 02 #include <cstdio>
- 03
- 04 int main()
- 05 {
- 06
- 07 FILE * fp = fopen("test.out", "w");
- 08 fprintf(fp, "茴香豆的茴");
- 09 fclose(fp);
- 10
- 11
- 12 fp = fopen("test.out", "r");
- 13 char line[256];
- 14 fscanf(fp, "%s", line);
- 15 printf("%s\r\n", line);
- 16 fclose(fp);
- 17
- 18 return 0;19 }
输出结果如图2-50所示。
好奇的读者可以在项目的当前目录找到输出文件test.out,它的内容如图2-52所示。
|
| 图2-52 使用CRT库函数生成的文件 |
光盘导读
该项目对应于光盘中的目录"\ch02\ CrtWriter"。
【责任编辑:
云霞 TEL:(010)68476606】