当前位置: 首页 > wzjs >正文

招商码头无忧查询系统沈阳seo排名收费

招商码头无忧查询系统,沈阳seo排名收费,怎么做查询网站,常州网站建设公司机构引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前,希望您先仔细看一下这篇博文,理解一下文件指针和流的概念:C语言【文件操作】详解上-CSDN博客文章浏览阅读606次,点赞26次,收藏4次。先整体认识一下文件是…

引言

        介绍和文件操作中文件的顺序读相关的函数

        看这篇博文前,希望您先仔细看一下这篇博文,理解一下文件指针和流的概念:C语言【文件操作】详解上-CSDN博客文章浏览阅读606次,点赞26次,收藏4次。先整体认识一下文件是什么,会打开和关闭文件。 关于对文件操作函数在下部分来介绍 https://blog.csdn.net/2401_88433210/article/details/146432061?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

一、文件的顺序读写函数介绍

顺序读写函数(都需要头文件stdlib.h):

函数名功能(以文件为对象来说)适用于
fgetc字符输入函数所有输入流(文件流和stdin)
fputc字符输出函数所有输出流(文件流和stdout)
fgets文本行输入函数所有输入流(文件流和stdin)
fputs文本行输出函数所有输出流(文件流和stdout)
fscanf格式化输入函数所有输入流(文件流和stdin)
fprintf格式化输出函数所有输出流(文件流和stdout)
fread二进制输入函数文本输入流
fwrite二进制输出函数文本输出流

上面说的适用于所有输入流⼀般指适用于标准输入流和其他输入流(如文件输入流)

所有输出流⼀般指适用于标准输出流和其他输出流(如文件输出流)。

下面看代码理解

共四对函数,下面一个一个介绍

1.fputc和fgetc 

fputc 

      fputc函数原型:fputc - C++ Reference (cplusplus.com)

int fputc ( int character, FILE * stream );

写字符到文件中

成功写入到文件中,返回对应的ASCII值

如果写入失败,返回EOF

代码一(fputc):

        以只写的形式'w'打开文件data.c,没有该文件的话会自动创建一个该文件,并用fputc函数写入字符a到z。

//写字符到文件中
#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "w");//打开文件if (pf == NULL){perror("fopen");return 1;}//写字符//fputc('a', pf);//fputc('b', pf);//fputc('c', pf);//fputc('d', pf);//fputc('e', pf);for (int i = 'a'; i <= 'z'; i++){fputc(i, pf);}//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:成功写入

fgetc 

        fgetc函数原型:fgetc - C++ Reference (cplusplus.com)

int fgetc ( FILE * stream );

(从文件中)读取字符成功,返回字符对应的ASCII值

如果读取失败或者遇到文件末尾,返回EOF

如果读取失败,会设置一个错误状态值------用ferror来判断(下一节讲)

如果遇到文件末尾,会设置一个遇到文件末尾的状态值------用feof来判断(下一节讲)

代码二(fgetc):

          以只读的形式'r'打开文件data.c,用fgetc函数读取字符a到z。

#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "r");//打开文件if (pf == NULL){perror("fopen");return 1;}int ch = fgetc(pf);printf("%c\n", ch);//ach = fgetc(pf);printf("%c\n", ch);//bch = fgetc(pf);printf("%c\n", ch);//c//会一个一个读出来ch = 0;while ((ch = fgetc(pf)) != EOF){printf("%c ", ch);}//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:

 2.fputs和fgets函数

        fputs函数原型:fputs - C++ Reference (cplusplus.com)

int fputs ( const char * str, FILE * stream );

将字符串,写入到文件中(\0不会写入到文件中)
成功后,将返回非负值。
出错时,该函数返回 EOF 并设置错误指示符 (ferror)。   

fputs 

代码一(fputs):

         以只写的形式'w'打开文件data.c,没有该文件的话会自动创建一个该文件,并用fputs函数写入字符串“hello word”。

#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "w");//打开文件if (pf == NULL){perror("fopen");return 1;}fputs("hello word\n", pf);//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:

fgets 

   fgets函数原型:fgets - C++ Reference (cplusplus.com)

char * fgets ( char * str, int num, FILE * stream );

(从文件中)读取(num - 1)个字符到str中。(会读取换行符\n,最后一个位置是\0)

读取成功返回字符串str的地址

如果在读取任何字符之前发生这种情况,则返回的指针为空指针(并且 str 的内容保持不变)。
如果在尝试读取字符时遇到文件结尾,则设置 eof 指示符 (feof)。
如果发生读取错误,则设置错误指示符 (ferror) 并返回 null 指针(但 str 指向的内容可能已更改)。

代码二(fgets):       

        以只读的形式'r'打开文件data.c,用fgets函数读取字符串到数组中。

#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "r");//打开文件if (pf == NULL){perror("fopen");return 1;}char arr[20] = { 0 };fgets(arr, 20, pf);printf("%s", arr);//关闭文件fclose(pf);pf = NULL;return 0;
}

  运行结果:

调试看arr数组里面的内容: 

3. fscanf和fprintf函数

fprintf

        fprintf函数原型:fprintf - C++ Reference (cplusplus.com)

int fprintf ( FILE * stream, const char * format, ... );

        可以类比printf函数来使用,只不过多了一个写入的流对象的指针

成功后,将返回写入的字符总数。
如果发生写入错误,则设置错误指示符 (ferror) 并返回负数。
如果在写入宽字符时出现多字节字符编码错误,则 errno 设置为 EILSEQ 并返回负数。

代码一(fprintf): 

        以只写的形式'w'打开文件data.c,没有该文件的话会自动创建一个该文件,并用fprintf函数写入数据,任何类型的数据都可以

#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "w");//打开文件if (pf == NULL){perror("fopen");return 1;}char arr[20] = "hello";int num = 100;double PI = 3.14;fprintf(pf, "%s %d %f", arr, num, PI);//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:

fscanf

fscanf函数原型:fscanf - C++ 参考 (cplusplus.com)

int fscanf ( FILE * stream, const char * format, ... );

        类比scanf来使用,只不过多了一个流对象的指针

        成功后,该函数返回成功填充的参数列表的项目数。

        如果在读取时发生读取错误或到达文件末尾,则会设置正确的指示符(feof 或 ferror)。而且,如果在成功读取任何数据之前发生任何情况,则返回 EOF。

代码二(fscanf): 

        以只读的形式'r'打开文件data.c,用fscanf函数读取内容到结构体中。

struct S
{char arr[20];int num;double PI;
};
#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "r");//打开文件if (pf == NULL){perror("fopen");return 1;}struct S s = { 0 };//读文件fscanf(pf, "%s %d %lf", s.arr, &(s.num), &(s.PI));printf("%s %d %lf\n", s.arr, s.num, s.PI);//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:

4.fwrite和fread 

fwrite

fwrite函数原型:fread - C++ Reference (cplusplus.com)

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

ptr   :指向要写入的元素数组的指针,转换为 const void*。

size :要写入的每个元素的大小(以字节为单位)。
count : 元素数,每个元素的大小为 size 字节。

stream:指向指定输出流的 FILE 对象的指针。

结合代码来看一下就明白了:

代码一(fwrite): 

          以只写的形式'w'打开文件data.c,没有该文件的话会自动创建一个该文件,并用fwrite函数,写入二进制数据。

#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "w");//打开文件if (pf == NULL){perror(pf);return 1;}int arr[20] = { 1,2,3,4,5 };fwrite(arr, sizeof(arr[0]), 5, pf);fclose(pf);pf = NULL;return 0;
}

运行结果:

以二进制的形式来看: 

第一步:

第二步: 

第三步: (看)

fread 

fread函数原型:fread - C++ Reference (cplusplus.com)

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

ptr   :指向要写入的元素数组的指针,转换为 const void*。

size :要写入的每个元素的大小(以字节为单位)。
count : 元素数,每个元素的大小为 size 字节。

stream:指向指定输入流的 FILE 对象的指针。

结合代码来看一下就明白了:

代码二(fread):

    以只读的形式'r'打开文件data.c,用fread函数读取数据。

#include<stdio.h>
#include<stdlib.h>
int main()
{FILE* pf = fopen("data.txt", "r");//打开文件if (pf == NULL){perror(pf);return 1;}int arr[20] = { 0 };fread(arr, sizeof(arr[0]), 5, pf);for (int i = 0; i < 5; i++){printf("%d ", arr[i]);}fclose(pf);pf = NULL;return 0;
}

运行结果:

 二、理解函数适用的流

         对应适用于所以流的函数,其参数部分的流部分可以是文件指针FILE的指针也可以是屏幕和键盘的输入输出流即stdin 和 stdout 流。

以fprintf函数来举个例子,其他类似:

#include<stdio.h>
#include<stdlib.h>
struct S
{char arr[20];int num;double pai;
};
int main()
{struct S s = { "world", 202, 3.14 };fprintf(stdout, "%s %d %.2lf", s.arr, s.num, s.pai);return 0;
}

运行结果:

http://www.dtcms.com/wzjs/286765.html

相关文章:

  • 网站设计师发展查网站权重
  • 政务公开与政府网站建设刷粉网站推广马上刷
  • 响应式网站建设教程百度移动版
  • dedecms 门户网站制作电脑培训网上培训班
  • wordpress社整站优化外包服务
  • 在线定制签名网络网站推广优化
  • 建网站自己与租云服务器哪个好资源最多的磁力搜索引擎
  • 成都建模培训怎么优化自己网站
  • 动态网站建设考试题优化搜索关键词
  • 18元套餐app优化排名
  • 自动做简历的网站企业宣传视频
  • 贵港市网站建设关键词指数查询
  • 火爆网页游戏排行榜百度seo学院
  • 东莞市门户网站建设怎么样手机优化大师
  • 石龙仿做网站seo关键词推广优化
  • 昆明培训网站建设本地推广平台有哪些
  • 网上找客户有哪些网站媒体网络推广价格优惠
  • 做邮箱网站seo教程免费
  • 怎么做网站图片做的更好看百度下载免费安装
  • 网站如何制作建设网络优化大师
  • 公司注册资金最新规定百度推广优化公司
  • 网站是不是用cms做的制作网站代码
  • 重庆做网站代运营做互联网项目怎么推广
  • 男女真实做性视频网站推广app佣金平台正规
  • 做网站在阿里云上面买哪个服务百度联盟项目看广告挣钱
  • 区政府网站建设规范报告沈阳全网推广公司哪家好
  • 电子商务网站建设维护网站优化哪家好
  • 购物网站销售管理长沙h5网站建设
  • 商城网站建设预算seo优化在哪里学
  • 织梦中英文网站源码百度推广在哪里