格式化输入-hds ams 2500用户手册
格式化输出执行格式化输出处理的是三个printf
函数。
#include
int printf(const char *format, ...);
int fprintf(FILE *fp, const char *format, ...);
两个函数返回:若成功则为输出字符数,若输出出错则为负值。
int sprintf(char *buf, const char *format, ...);
返回:存入数组的字符数。printf
将格式化数据写到标准输出,fprintf
写至指定的流,sprintf
将格式化的字符送入数组buf
中。sprintf
在该数组的尾端自动加一个null字节,但该字节不包括在返回值中。是不是有点复杂?别担心,只要记住printf
输出到屏幕,fprintf
输出到文件,sprintf
输出到字符串就好!
4.3 BSD定义sprintf
返回其第一个参数(缓存指针,类型为char*
),而不是一个整型。而ANSI C要求sprintf
返回一个整型。注意,sprintf
可能会造成由buf
指向的缓存的溢出。保证该缓存有足够长度是调用者的责任。这是不是让你开始担心了?别担心,只要确保你分配的数组足够大就不会有问题。
对这三个函数可能使用的各种格式变换,请参阅UNIX手册,或Kernighan和Ritchie〔1988〕的附录B。这里还有更多详情,了解一下?
下列三种printf
族的变体类似于上面的三种,但是可变参数表(...
)代换成了arg
。
#include <stdarg.h>
#include <stdio.h>
int vprintf(const char *format, va_list arg);
int vfprintf(FILE *fp, const char *format, va_list arg);
stdio.h>stdarg.h>
两个函数返回:若成功则为输出字符数,若输出出错则为负值。
int vsprintf(char *buf, const char *format, va_list arg);
返回:存入数组的字符数。在附录B的出错例程中,将使用vsprintf
函数。关于ANSI C标准中有关可变长度参数表的详细说明请参阅Kernighan和Ritchie〔1988〕的7.3节。应当了解的是,由ANSI C提供的可变长度参数表例程(
头文件和相关的例程)与由SVR 3(以及更早版本)和4.3 BSD提供的
例程是不同的。真是个意外惊喜!想进一步了解?点这里。
格式化输入执行格式化输入处理的是三个scanf
函数。这部分内容你可以在这篇文章里找到更多详细解释。
下载地址
用户评论