流的格式化输入输出是指:人输入的数据以及最终存储在磁盘上的数据格式不同,所以这些函数实现数据按照指定的格式输入输出,

这里所说的指定的格式包括整形(%d)、浮点型(%f)、字符型(%c)、指针(%p)、字符串(%s)、以及忽略某些位某些位(%*,eg:abcde%d%*2d%d,忽略bc)

一:printf(),scanf()

针对标准输入stdin、标准输出stdout

int c=30

printf("the value of c is:%d",c)

scanf("%s",a)

二:fprintf(),fscanf()

适用于任意流

FILE *fp

fp=fopen("text.txt","r")

fprintf(stdout,"the value of c is:%d",c)=printf("the value of c is:%d",c)

fprintf(fp,"%c",c)——将c的值按照%c的格式输出到标准输出设备

fscanf(stdin,"%s",a)=scanf("%s",a)

fscanf(fp,"%c",c)——从text.txt中读取格式为%c的c的值

fscanf(fp,"%c",&c)——从text.txt中读取格式为%c的字符c(&c表示字符c)

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
        char a_buf[256],b_buf[256];
        FILE *fp;
        if((fp=fopen("./tmp","w+"))==NULL)//打开或创建一个临时文件
        {
                perror("open error");
                exit(EXIT_FAILURE);//XIT_FAILURE 作为exit()的参数,表示没有成功地执行一个程序。 
                }
        printf("input a string(<256):\n");
        scanf("%s",a_buf);
        fprintf(fp,"%s",a_buf);//将用户数如到a缓冲区的数据通过fp流输出到临时文件./tmp
        rewind(fp);//将文件指针返回到文件开始位置
        fscanf(fp,"%s",b_buf);
        printf("%s\n",b_buf);
        fclose(fp);
        return 0;
        }
例子

这里和重定向概念不同fprintf直接往你所定义的文件描述符关联的文件里写数据

而重定向是关闭某个标准输入输出设备文件(文件描述符为1,1,2),而将另一个普通文件的文件描述符设置为0,1,2,但实际上还是用的stdin,stdout和stderr

三:sprintf(),sscanf()

sprintf()主要针对字符串的操作,可控制格式

将整数作为字符串保存sprintf(s,"%d",123)将123作为字符串输出到s

将浮点书作为字符串sprintf(s,"%d",0.123)产生字符串0.123

链接字符串sprintf(s,"%d and %d",aaa,bbb),产生字符串“aaa and bbb”

sscanf()以固定字符串为输入源

char str[512];

sscanf("123456","%4s",str)取指定长度的字符串输入到str

 posted on 2013-12-07 22:02  瞌睡的美人鱼  阅读(351)  评论(0编辑  收藏  举报