做视频资源网站,wordpress 会员名字,公司网站没备案,湖南十大软件公司介绍目录
一、标准C库打开/创建文件#xff0c;读写文件#xff0c;光标移动
二、标准C库写入结构体到文件
三、其他函数补充
1.fputc函数
2.feof函数和fgetc函数 前面讲到的open函数都是基于linux内核的#xff0c;也就是说在Windows系统上无法运行#xff0c;移植性比较…目录
一、标准C库打开/创建文件读写文件光标移动
二、标准C库写入结构体到文件
三、其他函数补充
1.fputc函数
2.feof函数和fgetc函数 前面讲到的open函数都是基于linux内核的也就是说在Windows系统上无法运行移植性比较差但标准C库同样有一套对文件进行操作的函数。
一、标准C库打开/创建文件读写文件光标移动
打开文件函数
#include stdio.hFILE *fopen(const char *path, const char *mode);
返回值为FILE类型的文件流第一个参数是文件的路径第二个参数是用什么权限打开文件权限如下
写入文件函数
#include stdio.hsize_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
第一个参数是缓存区,第二个参数表示我们要写入的每个数据的大小(例如要写入一个字符串,那么sizesizeof(char),表示一个字符的大小)第三个参数是个数第四个选择哪个文件传入fopen函数的返回值即可。
读取文件函数
#include stdio.hsize_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
参数含义和写入文件的函数类似
光标移动函数
#include stdio.hint fseek(FILE *stream, long offset, int whence);
代码示例:
#include stdio.h
#include string.hint main()
{FILE *fp;//存储fopen的返回值char *str Hello World!;char readBuf[128]{0};//存放读取到的数据fp fopen(./li.txt,w);//因为第二个参数要传入指针所以用双引号fwrite(str,sizeof(char),strlen(str),fp);fseek(fp,0,SEEK_SET);//光标复位fread(readBuf,sizeof(char),strlen(str),fp);printf(read data:%s\n,readBuf);return 0;
}
可以看到标准C库的文件相关函数和Linux的函数是差不多的,标准C库对不同文件的操作是获取它的FILE类型的指针,而Linux是int类型的文件描述符,这些函数都可以类比Linux的函数来记忆。
运行结果 二、标准C库写入结构体到文件
代码示例
#include stdio.h
#include string.hstruct Test{int a;char c;
};int main()
{FILE *fp;struct Test data{100,a};struct Test data2;fp fopen(./file1,w);int n_write fwrite(data,sizeof(struct Test),1,fp); fseek(fp,0,SEEK_SET);int n_read fread(data2,sizeof(struct Test),1,fp);printf(read %d,%c\n,data2.a,data2.c);fclose(fp);return 0;
}这里的代码都可以类比我的上一篇文章Linux文件编程应用只不过函数的参数和返回值不太相同能看懂上一篇文章那么这一篇就只是对C语言的巩固这里解释一下fwrite函数和fread函数第二个和第三个参数的含义拿上面代码举例每次写都写入一个结构体类型的数据大小用sizeof计算第三个参数表示写了几次这里写一次就行了。 运行结果 三、其他函数补充
1.fputc函数
#include stdio.hint fputc(int c, FILE *stream);
fputc函数可以写入一个字符或整数到文件里用fopen函数得到文件的返回值传入fputc的第二个参数即可要写入多个数据用循环的方式写入即可。 代码示例
#include stdio.h
#include string.hint main()
{FILE *fp;char *strHello World!;int i;int lenstrlen(str);fpfopen(./file1,w);for(i0;ilen;i){fputc(*str,fp);str;}fclose(fp);return 0;
}
2.feof函数和fgetc函数
feof函数
#include stdio.hint feof(FILE *stream);
fgetc函数
#include stdio.hint fgetc(FILE *stream);
这两个函数可以组合在一起用见代码示例
#include stdio.h
#include string.hint main()
{FILE *fp; char c;fp fopen(./li.txt,r);while(!feof(fp))// nonezero if reach end of file{c fgetc(fp);printf(%c,c);}fclose(fp);return 0;
}我们先用只读的方式打开li.txt文件feof可以作为条件判断当读到文件的尾部时feof函数的返回值为0在while循环里使用fgetc函数一个一个字符读取fp所指向的文件。至于为什么不会一直读文件的同一个位置应该就和这两个函数有关
以上就是Linux引入标准C库对文件操作的函数看了前面两个文章再看这篇会很好理解用标准C库来写代码无非就是移植性比较好以后在Linux学习过程中很多时候还是要用到Linux的函数。接下来我会更新Linux进程编程的学习笔记希望大伙一起讨论学习