流的格式化输入输出

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

这里所说的指定的格式包括整形(%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

转载于:https://www.cnblogs.com/sunshineKID/p/3463247.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值