文件系统知识

文件的读写操作

代码实操:单个字符

行读写

#include<stdio.h>
void main(){
    char arr[100];
    FILE*ch=fopen("tes.txt","r");
    FILE*pf=fopen("test.txt","w");
    if(ch==NULL){
    return 0;
    }//文本行输入
    fgets(arr,100,ch);//三个参数分别代表:1.把读取的数据存到arr;2.最大读取数量3.从ch中读取
    printf("%s",arr);//此处会换行是因为读取字符串时会把文档的‘\n’也读取进去
    fgets(arr,100,ch);//而puts自带换行
    printf("%s",arr);//因为文档内容到第二行就结束了,所以不会换行
    puts(arr);
    fclose(ch);
    ch=NULL;
    //文本行输出
    if(pf==NULL)
        return 0;
    fputs("hello",pf);//两个参数分别表示:1.输入内容/从哪里输入2.pf接收内容
    fputs(arr,pf);//没有换行哦
    fclose(pf);
    pf=NULL;
    }

输入结果                                             输出到文本的结果

               

以格式化形式输入输出

#include<stdio.h>
struct U{
   int n;
   float score;
   char arr[10];
};
void main(){
   //fprintf和fscanf(所有流)
    //printf是针对标准输出流,scanf是针对标准输入流
    struct U u={0};
    struct U n1={3,3.14f,"fafwfwa"};
    FILE*pf=fopen("hrazers.txt","r");
    FILE*pd=fopen("hrazy.txt","w");
    if(pf==NULL||pd==NULL)
        return 0;
    //以格式化的形式写文件
    fprintf(pd,"%d %f %s",n1.n,n1.score,n1.arr);
    //格式化的输入数据
    fscanf(pf,"%d %f %s",&(u.n),&(u.score),u.arr);//从pf读取数据写到结构体中
    printf("%d %f %s",u.n,u.score,u.arr);
    fclose(pf);
    pf=NULL;
}

写文件                                    输入数据

     

文件打开会生成三个默认流

标准输入流和输出流实操

#include<stdio.h>
#include<string.h>
void main(){
   char bf[100];
   int ch =fgetc(stdin);//从键盘输入
   fputc(ch,stdout);//由屏幕输出
   fflush(stdin);
    fflush(stdout);
   //从键盘读取一行文本
   fgets(bf,100,stdin);//从标准输入流读取
   fputs(bf,stdout);//输出到标准输出流
   fflush(stdin);
    fflush(stdout);
   //等价于
    gets(bf);//从标准输入流读取
    puts(bf);//输出到标准输出流
}

可以从标准输入流读信息,也可以直接输出到标准输出流

三组函数对比

sscanf/sprintf实操

#include<stdio.h>
struct U{
   int n;
   float score;
   char arr[10];
};
void main(){
    struct U u={3,3.14f,"afbahfbaw"};
    struct U tmp;
    char buf[100];
    sprintf(buf,"%d %f %s",u.n,u.score,u.arr);//将格式化的数据转换成字符串存入buf
    printf("%s\n",buf);
    sscanf(buf,"%d %f %s",&(tmp.n),&(tmp.score),tmp.arr);//将buf中的数据以格式化的形式读取
    printf("%d %f %s\n",tmp.n,tmp.score,tmp.arr);
}

Posted on 2022-03-20 21:52  断线续传  阅读(33)  评论(0编辑  收藏  举报