格式化输入-鸿鹄论坛_华为认证h35-211-hcnp-access network题库
5.11.1格式化输出执行格式化输出处理的是三个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字节,但该字节不包括在返回值中。
4.3 BSD定义sprintf返回其第一个参数(缓存指针,类型为char*),而不是一个整型。ANSI C要求sprintf返回一个整型。注意,sprintf可能会造成由buf指向的缓存的溢出。保证该缓存有足够长度是调用者的责任。对这三个函数可能使用的各种格式变换,请参阅UNIX手册,或Kernighan和Ritchie〔1988〕的附录B。下列三种printf族的变体类似于上面的三种,但是可变参数表(...)代换成了arg。
包括vprintf、vfprintf和vsprintf在内的这三种函数适用于可变参数列表的处理。vprintf将格式化数据写入标准输出,而vfprintf则写入指定的文件流,vsprintf将格式化数据写入字符数组中。与sprintf不同,vsprintf并不会在缓冲区末尾添加null字符,因此需要手动添加。
关于可变长度参数列表的详细信息,可参阅Kernighan和Ritchie〔1988〕的7.3节或UNIX手册中的相关部分。了解ANSI C标准中可变参数表的使用方法,可以有效避免内存溢出和其他潜在错误。
在处理输入时,scanf家族的函数也非常重要。printf家族的函数主要用于输出,而scanf家族的函数则用于格式化输入。这些函数包括scanf、fscanf和sscanf,它们分别从标准输入、指定文件流和字符串中读取格式化数据。确保输入数据符合预期的格式,可以避免读取错误和数据溢出。
有关printf和scanf函数的更详细说明及其在实际编程中的应用,请参考以下资源: