码迷,mamicode.com
首页 > 编程语言 > 详细

C语言->关于文件数据的录入和输出调用的函数总结

时间:2019-11-10 17:29:02      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:函数   函数定义   数据   字符   %s   内容   新建文件夹   打开   putc   

数据输入输出对象之间的关系图:

技术图片                                     

 

函数使用说明:

1.一个字符的输入\输出,对象是键盘(缓存和屏幕)

1.1.getchar(a),putchar(a);

1.2.scanf(“%d”,&i),printf(“%d”,i)

2. 一个变量的输入\输出,对象是键盘(缓存和屏幕)

2.1. gets(a),puts(a)

2.2.scanf(“%d %c %2f”,&i,&a,&b),printf(“%d %c %2f”,i,a,b)

 

3.一个字符的输入\输出,对象是文件(磁盘文件和缓存)

3.1.p=fgetc(fp),fput(p,fp);p=getc(fp),putc(p,fp)

3.2.p=getw(fp),putw(i,fp)

      注释:用来对磁盘文件读写一个字(整数)

函数定义:

>int i; FILE *fp;                                                                  >FILE *fp;

>putw(i,fp){                                                                        >getw(fp){

>char *s; s=&i;                                                                   >char *s; int i;

>putc(s[0],fp);putc(s[1],fp);                                                 >s=&i; s[0]=getc(fp); s[1]=getc(fp);

>return(i);                      }                                                     >return(i);                       }

4.一\多个字符窜的输入\输出,对象是文件(磁盘文件和缓存)

4.1.fgets(str,n,fp),fputs(str,fp)    

     注释://fgetc()函数(getc()宏)与fputc()函数(putc()宏)

getc() putc()是宏,fgetc(),fputc()是函数,它们之间的关系

#define putc(ch,fp) fputc(ch,fp)

#define getc(fp)    fgetc(fp)

由此可见,getc(fp)是fgetc(ch,fp)定义的宏,putc(ch,fp)是fputc(ch,fp)定义的宏,它们实现的功能一样

4.2. fread(buffer,size,count,fp),fwrite(buffer,size,count,fp)

     注释:fread(读入存放数据的地址(buffer),要读写的字节数(size),读写多少个size字节的数据项(count),文件型指针(fp));

fwrite(输出存放数据的地址(buffer),要读写的字节数(size),读写多少个size字节的数据项(count),文件型指针(fp));

例子:

fread(&stud[i],sizeof(struct student_type),1,stdin);  //读取数据到缓存里的结构\数组变量,用printf()显示数据到屏幕

fwrite(&stud[i],sizeof(struct student_type),1,stdin);

4.3. fscanf(fp,”%d,%c,%2f”,&i,&a,&b),fpringf(fp,”%d,%c,%2f”,i,a,b)

注释:格式限制输入\输出,读写对象不是终端而是磁盘文件(建议少用),可以与fread和fwrite替换,调用格式:

fscanf(文件指针,格式字符串,输出表列);   //从磁盘文件读取数据到缓存里的变量,用printf()显示数据到屏幕???

fprintf(文件指针,格式字符串,输出表列);

例子:fscanf(fp,"%d,%f",&i,&t);

      fprintf(fp,"%d,%6.2f",i,t);

 

文件结构体: typedef struct { int -fd;        //文件号   int -cleft;     //缓冲区中剩下的字符   int -mode;      //文件操作模式   char * -nextc;  //下一个字符位置   char * -buff;   //文件缓冲区位置   }FILE;

 

例子1:打开一个已存在文件,录入字符串到文件

#include"stdio.h" void main(){ 

FILE *in,;  char *ch; 

//r+为读/写打开一个文本文件,文件为非空文件,则要把位置指针职位文件末尾,需加fseek(in,0,2);语句 

in=fopen("E:\\新建文件夹\\新建文件夹\\a.txt","r+");   //a在文件末尾追加数据,空文件和非空文件位置指针都是在文件末尾   

//rewind(in);   //使位置指针重新回到文件开头

//i=ftell(fp);     //获得当前指针位置

 fseek(in,0,2);  //使位置指针回到文件末尾

  //ch=c;           //录入的字符串会产生乱码,赋值错误  

ch=&c[0];         //1.使用指针  

//scanf("%s",c);  //2.使用数组  

gets(ch); 

fputs(ch,in); puts(ch);  

fclose(in);

}

 

例子2:录入字符,在屏幕显示录入字符,显示文件里的全部内容

#include "stdio.h"

#include "stdlib.h"

#define  EOP -1        //定义宏,文件结束符

void main(){  

    FILE *in;

   char ch[50],p;   

    printf("Please input the file name:\n");   

    scanf("%s",ch);  

    if((in=fopen(ch,"r+"))==NULL){    //定义文件字符串要足够长,不然会出错

    printf("error!");     exit(0);      }

   fseek(in,0,2);   

   p=getchar();

   while(p!=‘#‘){

    fputc(p,in);

   putchar(p);

   p=getchar();

   }  printf("\n");

   rewind(in);         //文件流指针移到文件开始位置

   p=fgetc(in);

    while(!feof(in)){     //p!=EOF不适合缓冲文件系统处理二进制文件的情况;错误:p!=‘\0‘ p!=‘\n‘

   putchar(p);

    p=fgetc(in);

    }  fclose(in);  printf("\n"); }

C语言->关于文件数据的录入和输出调用的函数总结

标签:函数   函数定义   数据   字符   %s   内容   新建文件夹   打开   putc   

原文地址:https://www.cnblogs.com/WE-ON-LINE/p/11830742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!