C语言printf函数族详解及使用示例

5星 · 超过95%的资源 需积分: 13 3 下载量 98 浏览量 更新于2024-09-11 1 收藏 64KB PDF 举报
"这篇文档详述了C语言中的printf函数族的使用方法,包括向终端输出、文件输出和缓冲区输出。主要介绍了printf、fprintf和sprintf这三个基本类型的函数,它们都遵循格式化输出的原则,根据指定的format字符串来转换和格式化数据。" 在C语言中,printf函数族是用于格式化输出的重要工具。这个家族包括printf、fprintf和sprintf三个主要成员,它们的功能都是基于一个格式字符串(format)来输出或存储数据。 1. printf函数: printf(const char *format, ...) 是将格式化的数据输出到标准输出设备,通常是终端。它接受一个格式字符串和可变数量的参数,按照格式字符串的指示将数据转换并输出。例如,`printf("%d %f\n", i, j)` 会打印整数i和浮点数j。printf函数返回实际输出的字符数,如果发生错误则返回-1。 2. fprintf函数: fprintf(FILE *stream, const char *format, ...) 和printf类似,但它允许我们指定输出的目标,可以是一个打开的文件流。例如,`fprintf(fp, "%s %d\n", str, num)` 可以将字符串str和整数num写入文件fp。fprintf返回值同样表示成功输出的字符数,错误时返回-1。 3. sprintf函数: sprintf(char *str, const char *format, ...) 则将格式化后的数据写入一个字符串数组。这通常用于在内存中构建字符串,而不是直接输出。例如,`sprintf(buffer, "Value: %d", value)` 会把整数值value以"Value: "开头的格式写入buffer数组。sprintf返回值是写入的字符数,不包括结束的'\0'字符。 这些函数都支持多种格式控制字符,如%d用于整数,%f用于浮点数,%s用于字符串,%c用于单个字符,以及宽度控制符如%2d表示至少占用2列宽度等。格式字符串中的百分号 (%) 开始一个格式说明符,后面可以跟一些选项,比如宽度、精度、符号指示等,来进一步定制输出。 例如,`printf("%+5d", num)` 会输出一个带有正负号的整数num,占据至少5列宽度,如果num为正,前面会有"+"号。`fprintf(fp, "%04x", hex_value)` 则会以十六进制格式输出hex_value,前面填充0以达到4位宽度。 在使用printf函数族时,需要注意避免缓冲区溢出,特别是在使用sprintf时,确保目标字符串数组有足够的空间容纳所有输出字符。此外,正确处理错误情况,如检查返回值,可以帮助编写更健壮的代码。