scanf fscanf sscanf printf fprintf sprintf的区别和使用 fseek的使用

#include<stdio.h>
//scanf fscanf sscanf的区别
//scanf 针对标准输入的格式化的输入语句--stdin
//fscanf  针对所有输入的格式化的输入语句--stdin/文件
sscanf   从一个字符串读取一个格式化的数据
//使用形式:   sscanf(存放在新的字符串的名字,"%s %d %d",&(原来结构体的存储方式));
//            printf("%s",字符串名字);  用新的字符串字符串打印方式

//printf fprintf sprintf的区别
//printf 针对标准输出的格式化的输出语句--stdin
//fprintf 针所有准输出的格式化的输出语句--stdin/文件
//sprintf   把一个格式化的结构体变为字符串  
//使用形式:   sprintf(存放在新的字符串的名字, "%s %d %f", s.arr, s.age, s.f);
//            printf("%s",字符串名字);  用结构体形式打印
//实例:
struct S
{
    char arr[10];
    int age;
    float f;
};
int main()
{
    struct S s = { "hello",20,5.5f};
    struct S tmp = { 0};
    char buf[100] = { 0 };
    sprintf(buf, "%s %d %f", s.arr, s.age, s.f);//sprintf 把一个格式化的结构体变为字符串
    printf("%s\n", buf);//字符串形式打印
    sscanf(buf, "%s %d %f", tmp.arr, &(tmp.age), &(tmp.f));
    //sscanf 从buf字符串中还原出一个结构体数据
    //tmp.arr不加地址,因为数组名本身就是地址,tmp.age tmp.f都需要加&
    printf(buf, " % s % d % f", tmp.arr, tmp.age, tmp.f);//用结构体形式打印
    return 0;
}

//1.文件的随机读写---fseek 根据文件指针的位置和偏移量来定位文件指针
//2.ftell 返回文件指针相对于起始位置的偏移量
//3.让文件指针回到起始位置rewind
int main()
{
    //打开文件
    FILE *pf=fopen("test.dat", "r");//r--读的形式
    if (pf == NULL)
    {
        perror("fopen");
        return 1;
    }
    //读取文件
    //1.按顺序读---若文件里面有abcdef
    int ch = fgetc(pf);//用fgetc读取一个字节--如a
    printf("%c\n", ch);
    ch = fgetc(pf);//用fgetc读取一个字节--如b
    printf("%c\n", ch);
    ch = fgetc(pf);//用fgetc读取一个字节--如c
    printf("%c\n", ch);
    //2.定义指针到某一位置读--fseek(针对某一个流/文件,偏移量,起始位置);---
    //起始位置有三个,当前指针位置SEEK_CUR,结束位置SEEK_END,开始位置SEEK_SET
    fseek(pf, -1, SEEK_CUR);
    printf("%c\n", ch);//打印结果为b   当前位置为c,-1是向前偏移一个位置
    int ret = ftell(pf);
    printf("%d\n", ret);//打印结果为2,   因为b相对于原来偏移为2
    //3.让文件指针回到起始位置rewind
    rewind(pf);
    ch = fgetc(pf);
    printf("%c\n", ch);//0


    //关闭文件
    fclose  (pf);
    pf = NULL;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力成为焦耳定律鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值