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

简介: 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;
}


相关文章
|
Linux C语言 开发者
深入解析Linux环境下的scanf()、sscanf()和fscanf()函数
在C语言中,`scanf()`、`sscanf()`和`fscanf()`是用于输入的三个常用函数。它们允许开发者从标准输入、字符串和文件中按照指定的格式读取数据。在Linux环境下,这些函数被广泛用于处理各种输入。本文将详细介绍这三个函数的用法,包括格式化字符串的语法和一些常见的使用场景。
761 1
|
1月前
|
存储
底层文件操作的各种函数(二)------printf,fprintf,sprintf,scanf,fscanf,sscanf的对比以及文件缓冲区
底层文件操作的各种函数(二)------printf,fprintf,sprintf,scanf,fscanf,sscanf的对比以及文件缓冲区
49 2
|
5月前
|
C语言
【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf
【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf
53 1
|
5月前
putchar()函数
【6月更文挑战第24天】putchar()函数。
114 2
|
6月前
getchar()&putchar()函数
getchar()&putchar()函数。
37 1
|
6月前
|
机器学习/深度学习
fprintf()函数和fwrite()函数
fprintf()函数和fwrite()函数
67 1
|
6月前
|
C语言
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
getchar() & putchar() 函数
getchar() & putchar() 函数。
149 2
|
存储 C语言 数据安全/隐私保护
c语言文件操作详解:fgetc,fputc,fgets,fputs,fscanf,,fprintf,fread,fwrite的使用和区别
c语言文件操作详解:fgetc,fputc,fgets,fputs,fscanf,,fprintf,fread,fwrite的使用和区别
189 0
|
C语言
【C语言】scanf/fscanf/sscanf和printf/fprintf/sprintf的详细介绍
【C语言】scanf/fscanf/sscanf和printf/fprintf/sprintf的详细介绍