"); //-->
在Linux中,格式化I/O(formatted I/O)指的是通过格式化输入输出函数对数据进行读写,这些函数允许你以特定的格式读写数据。
拓展:Linux实现标准输入和标准输出(STDIN_FILENO和STDOUT_FILENO)
格式化输出函数
C 库函数提供了 5 个格式化输出函数,包括:printf()、fprintf()、dprintf()、sprintf()、snprintf()。
1.1、printf()函数
原型:int printf(const char *format, ...);
功能:将格式化的字符串输出到标准输出(通常是终端)。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h> int main() { int age = 30; printf("Age: %d\n", age); return 0;}1.2、fprintf()函数
原型:int fprintf(FILE *stream, const char *format, ...);
功能:将格式化的字符串输出到指定的文件流。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h> int main() { FILE *file = fopen("output.txt", "w"); if (file != NULL) { fprintf(file, "Hello, file!\n"); fclose(file); } else { perror("Failed to open file"); } return 0;}1.3、dprintf()函数
原型:int dprintf(int fd, const char *format, ...);
功能:将格式化的字符串输出到指定的文件描述符。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h>#include <fcntl.h>#include <unistd.h> int main() { int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644); if (fd != -1) { dprintf(fd, "Hello, dprintf!\n"); close(fd); } else { perror("Failed to open file"); } return 0;}1.4、sprintf()函数
原型:int sprintf(char *str, const char *format, ...);
功能:将格式化的字符串输出到字符串缓冲区。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h> int main() { char buffer[100]; int age = 30; sprintf(buffer, "Age: %d", age); printf("%s\n", buffer); return 0;}1.5、snprintf()函数
原型:int snprintf(char *str, size_t size, const char *format, ...);
功能:将格式化的字符串输出到字符串缓冲区,最多写入size个字符。
返回值:返回要写入的字符数,如果返回值大于等于size,则表示输出被截断。
示例:
#include <stdio.h> int main() { char buffer[10]; int age = 30; snprintf(buffer, sizeof(buffer), "Age: %d", age); printf("%s\n", buffer); return 0;}2
格式化输入函数
C 库函数提供了 3 个格式化输入函数,包括:scanf()、fscanf()、sscanf()。
2.1、scanf()函数
原型:int scanf(const char *format, ...);
功能:从标准输入读取格式化数据。
返回值:成功匹配和赋值的输入项数,如果遇到错误或到达文件末尾,则返回负值。
示例:
#include <stdio.h> int main() { int age; printf("Enter your age: "); scanf("%d", &age); printf("You entered: %d\n", age); return 0;}2.2、fscanf()函数
原型:int fscanf(FILE *stream, const char *format, ...);
功能:从指定的文件流读取格式化数据。
返回值:成功匹配和赋值的输入项数,如果遇到错误或到达文件末尾,则返回负值。
示例:
#include <stdio.h> int main() { FILE *file = fopen("input.txt", "r"); if (file != NULL) { int age; fscanf(file, "%d", &age); printf("Age from file: %d\n", age); fclose(file); } else { perror("Failed to open file"); } return 0;}2.3、sscanf()函数
原型:int sscanf(const char *str, const char *format, ...);
功能:从字符串缓冲区读取格式化数据。
返回值:成功匹配和赋值的输入项数,如果遇到错误或到达字符串末尾,则返回负值。
示例:
#include <stdio.h> int main() { const char *input = "30"; int age; sscanf(input, "%d", &age); printf("Age from string: %d\n", age); return 0;}这些格式化输入输出函数提供了丰富的功能,便于处理各种类型的数据输入输出需求。
使用这些函数时需要特别注意格式化字符串的正确性和缓冲区的大小,以避免缓冲区溢出和其他潜在问题。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
嵌入式看门狗如何提升系统稳定性
意法半导体出厂中国制造的STM32 MCU
华清远见嵌入式在线视频教程——3、嵌入式Linux开发应用介绍
RK3576 + ROS2 SLAM建图与导航实战
华清远见嵌入式在线视频教程——4、基于ARM的嵌入式开发
linux入门精华
TI将边缘AI微控制器更深入地融入嵌入式设计
ARM 开发板使用手册 在三星 S3C2410开发板上烧写linux
FFT公司9200的板子的资料
嵌入式操作系统大比拼
嵌入式U盘读写器接口技术和系统设计
U-BOOT 与 MontaVista Linux 的移植
大家在互相借鉴吧!--嵌入式系统词汇表
华清远见嵌入式在线视频教程——2、嵌入式系统的选择与开发
未来倾向于UFS用于高性能嵌入式闪存
LCD驱动器SD0432与嵌入式系统的接口设计
大家在互相借鉴吧!--嵌入式系统词汇表
从COM到SMARC再到OSM:嵌入式计算模块的发展
华清远见嵌入式在线视频教程——1、走近嵌入式系统
Linux系统下USB摄像头驱动开发
[链接]Firefox_ 重新发现网络
LAN91C111型控制器在嵌入式以太网接口中的应用
大家在互相借鉴吧!--嵌入式系统词汇表
大家在互相借鉴吧!--嵌入式系统词汇表
IAR 扩展了嵌入式开发平台,提供 LTS 服务
彻底告别486:Linux内核维护者正式移除英特尔486处理器支持
米尔亮相德国嵌入式展2026 Embedded World
华清远见嵌入式在线视频教程——5、嵌入式Linux移植和u-boot
嵌入式系统的实时数据接口扩展
Linux就AI生成代码定下规则:允许Copilot类工具、拒绝劣质AI代码,错误由人类负责