微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 文件I/O编程之: 标准I/O编程

文件I/O编程之: 标准I/O编程

时间:08-13 来源:3721RD 点击:

次仅读写一个字符。其中字符输入输出函数如表6.21和表6.22所示。

表6.21 字符输出函数语法要点

所需头文件

#include <stdio.h>

函数原型

int getc(FILE * stream)
int fgetc(FILE * stream)
int getchar(void)

函数传入值

stream:要输入的文件流

函数返回值

成功:下一个字符
失败:EOF

表6.22 字符输入函数语法要点

所需头文件

#include <stdio.h>

函数原型

int putc(int c, FILE * stream)
int fputc(int c, FILE * stream)
int putchar(int c)

函数返回值

成功:字符c
失败:EOF

这几个函数功能类似,其区别仅在于getc()和putc()通常被实现为宏,而fgetc()和fputc()不能实现为宏,因此,函数的实现时间会有所差别。

下面这个实例结合fputc()和fgetc()将标准输入复制到标准输出中去。

/*fput.c*/

#include<stdio.h>

main()

{

int c;

/*把fgetc()的结果作为fputc()的输入*/

fputc(fgetc(stdin), stdout);

}

运行结果如下所示:

$ ./fput

w(用户输入)

w(屏幕输出)

2.行输入输出

行输入输出函数一次操作一行。其中行输入输出函数如表6.23和表6.24所示。

表6.23 行输出函数语法要点

所需头文件

#include <stdio.h>

函数原型

char * gets(char *s)
char fgets(char * s, int size, FILE * stream)

函数传入值

s:要输入的字符串
size:输入的字符串长度
stream:对应的文件流

函数返回值

成功:s
失败:NULL

表6.24 行输入函数语法要点

所需头文件

#include <stdio.h>

函数原型

int puts(const char *s)
int fputs(const char * s, FILE * stream)

函数传入值

s:要输出的字符串
stream:对应的文件流

函数返回值

成功:s
失败:NULL

这里以gets()和puts()为例进行说明,本实例将标准输入复制到标准输出,如下所示:

/*gets.c*/

#include<stdio.h>

main()

{

char s[80];

/*同上例,把fgets()的结果作为fputs()的输入*/

fputs(fgets(s, 80, stdin), stdout);

}

运行该程序,结果如下所示:

$ ./gets

This is stdin(用户输入)

This is stdin(屏幕输出)

3.格式化输入输出

格式化输入输出函数可以指定输入输出的具体格式,这里有读者已经非常熟悉的printf()、scanf()等函数,这里就简要介绍一下它们的格式,如表6.25~表6.27所示。

表6.25 格式化输出函数1

所需头文件

#include <stdio.h>

函数原型

int printf(const char *format,…)
int fprintf(FILE *fp, const char *format,…)
int sprintf(char *buf, const char *format,…)

函数传入值

format:记录输出格式
fp:文件描述符
buf:记录输出缓冲区

函数返回值

成功:输出字符数(sprintf返回存入数组中的字符数)
失败:NULL

表6.26 格式化输出函数2

所需头文件

#include <stdarg.h>
#include <stdio.h>

函数原型

int vprintf(const char *format, va_list arg)
int vfprintf(FILE *fp, const char *format, va_list arg)
int vsprintf(char *buf, const char *format, va_list arg)

函数传入值

format:记录输出格式
fp:文件描述符
arg:相关命令参数

函数返回值

成功:存入数组的字符数
失败:NULL

表6.27 格式化输入函数

所需头文件

#include <stdio.h>

函数原型

int scanf(const char *format,…)
int fscanf(FILE *fp, const char *format,…)
int sscanf(char *buf, const char *format,…)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top