目录

1.各种文件操作函数/文件使用方式总览

2.scanf printf和文件操作函数的区别

3.fgetc fputc(字符)

例:统计给定文本文件名为filename中所有大小写英文字符的个数并返回(运用fgetc,附代码)

4.fgets fputs(行) 

5.fprintf fscanf (格式化)     

1.对比fprintf和printf格式:

2.对比fprintf与fscanf格式:

例:从已知格式的ASCLL文件filename中顺序读取id和name,返回读取信息的条数(运用fscanf,附代码)

6.fread fwrite(二进制)

7.sscanf sprintf(字符串)

8.fseek(调节文件指针位置,3种)

9.ftell(返回位移值)

10.rewind(返回起始位置)


1.各种文件操作函数/文件使用方式总览


2.scanf printf和文件操作函数的区别

PS:可以将键盘和屏幕理解成接收的文件


3.fgetc fputc(字符)

fgetc特性:

  1. fgetc读取一次后,指针会跳着走,自动到下一个
  2. fgetc读到的不是Ascall码值,会返回EOF

例:统计给定文本文件名为filename中所有大小写英文字符的个数并返回(运用fgetc,附代码)

统计给定文本文件名为filename中所有大小写英文字符的个数并返回
long fileLengthOf(char filename[])
{
  char ch;
  long num=0;
  FILE*fp=fopen(filename,"r");
  if(fp==NULL)
  {
  return -1;
  }
  while(!feof(fp))//这里默认文件夹不为空,相关知识点见我主页feof博客
  {
   ch=fgetc(fp);
   if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
    {
     num++;
    }
  }
fclose(fp);
fp=NULL;
return num;
}

4.fgets fputs(行) 

写入:

读取:

fputs特性:

  •   写文件时会一行一行写,并且自动换行(手动加\n)

fgets特性:

  •   读的时候会放到一个字符数组里,再通过字符数组打印

  •   读取的数据默认带\0,也就是默认少一位

  •  读取的数据,当一行结束仍然不够数,则不会再读下一行(解决方法:再读取一次


5.fprintf fscanf (格式化)     

特点:

  • fscanf用于读取字符串数据流时,遇到空白字符(空格' '; 制表符'\t'; 新行符'\n')就停止,若要读取完整的一行数据,可以使用格式控制("%[^\n]%*c")。
  • (与其他文件函数对比)写入时目标指针fp前面

1.对比fprintf和printf格式:

2.对比fprintf与fscanf格式:

例:从已知格式的ASCLL文件filename中顺序读取id和name,返回读取信息的条数(运用fscanf,附代码)

从已知格式的ASCLL文件filename中顺序读取id和name,返回读取信息的条数
int funFile0(char*filename,int id[],char name[][32])
{
  int i,num;
  FILE *fp=fopen(filename,"r");
//FILE *fp=fopen(filename,"w");写入
  if(fp==NULL)
    return -1;
  else
  {
   fscanf(fp,"%d",&num);//当写时,此段删除
   for(i=0;i<num;i++)
    {
     fscanf(fp,"%d%s",id+i,name[i]);
    //fprint(fp,"%d%s",id[i],name[i]);写入
    }
  }
   fclose(fp);
   fp=NULL;
   return num;
}

6.fread fwrite(二进制)


7.sscanf sprintf(字符串)

实例:利用sscanf和sprintf进行结构体成员与字符串的转换

scanf/fscanf/sscanf与printf/fprintf/sprintf的对比:


8.fseek(调节文件指针位置,3种)

fseek函数作用:调节文件指针位置

int origin的位置可以设置三种:

  • SEEK_SET:文件开头
  • SEEK_CUR:文件指针现在的位置
  • SEEK_END:文件结尾

 例子:    目的:读取到d          方法:从头向后偏移+3/从尾向头偏移-3


9.ftell(返回位移值)


10.rewind(返回起始位置)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐