标准C库对文件操作的引入

modeopen和fopen的区别
在这里插入图片描述在这里插入图片描述在这里插入图片描述fopen、fread、fwrite的使用
(1)fopen

FILE *fopen(const char *path, const char *mode);path:文件路径
mode:以什么权限打开,要用双引号
它的返回值并不是文件描述符
若失败返回NULL
若操作成功返回FILE指针
操作方式和文件描述符类似

在这里插入图片描述(2)fwrite

size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
ptr: 表示缓冲区
size:  代表一条记录的长度
nmemb:   代表写入长度的个数
stream:  表示要写入哪个文件(已打开文件的指针,一般就是fopen的返回值)
返回值:读或写的记录数,成功时返回的记录数等于 nmemb,出错或读到文件末尾时返回的记录数小于 nmemb,也可能返回 0

(3)fread

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);ptr: 表示缓冲区
size:  代表一条记录的长度
nmemb:   代表写入长度的个数
stream:  表示要写入哪个文件(已打开文件的指针,一般就是fopen的返回值)
返回值:Fread()会返回实际读取到的nmemb数目,
也可能返回0,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,
这时必须用feof()ferror()来决定发生什么情况。

(4)fseek

int fseek(FILE *stream, long offset, int whence);
//用法和lseek类似,作用定位光标

代码示例

#include <stdio.h>
#include<string.h>
int main()
{FILE*fp;char*str="I am handsome";char readbuf[128]={0};fp=fopen("./feng.txt","w+");fwrite(str,sizeof(char),strlen(str),fp);fwrite(str,sizeof(char)*strlen(str),1,fp);fseek(fp,0,SEEK_SET);fread(readbuf,sizeof(char),strlen(str),fp);printf("read sata:%s\n",readbuf);return 0;
}

标准c库写结构体到文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
struct text
{int a;char c;
};
int main()
{FILE*fp;struct text data={100,'a'};struct text data2;fp=fopen("./file1","w+");//"./file1"    is    wenjianlujingint n_write=fwrite(&data,sizeof(struct text),1,fp);//write  return zijie de changdufseek(fp,0,SEEK_SET);int n_read=fread(&data2,sizeof(struct text),1,fp);printf("read %d,context %c\n",data2.a,data2.c);fclose(fp);return 0;
}

文件其他函数讲解
(1)fputc

int fputc(int c, FILE *stream);
c:  整形数、字符、字符串
stream: 目标文件,将c写入到目标文件

(2)feof

int feof(FILE *stream);
作用:测试是否到达文件的尾巴,若没有则返回0,若到达则返回非0

(3)fgetc

int fgetc(FILE *stream);
作用:将文件中的字符一个个读到返回的c中,然后再printf输出

代码演示

#include<stdio.h>
#include<string.h>
int main()
{FILE*fp;int i;char*str="I am handsome";int len=strlen(str);fp=fopen("./file1","w+");fputc('a',fp);for(i=0;i<len;i++){fputc(*str,fp);str++;}fclose(fp);return 0;
}
include<stdio.h>
#include<string.h>
int main()
{FILE*fp;char i;fp=fopen("./file1","r");while(!feof(fp)){i=fgetc(fp);printf("%c\n",i);}fclose(fp);return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转载爱哥自定义View系列--Paint详解

上图是paint中的各种set方法 这些属性大多我们都可以见名知意&#xff0c;很好理解&#xff0c;即便如此&#xff0c;哥还是带大家过一遍逐个剖析其用法&#xff0c;其中会不定穿插各种绘图类比如Canvas、Xfermode、ColorFilter等等的用法。 set(Paint src) 顾名思义为当前画笔…

只有程序员才懂这些黑色幽默!

也是机缘巧合&#xff0c;让我一个之前工作从未接触过程序员的人&#xff0c;现在成天和程序员打交道&#xff0c;要知道&#xff0c;不懂技术&#xff0c;往往他们想和你幽默的搞笑一下&#xff0c;未必能读懂。都说程序员情商低&#xff0c;不爱说话&#xff0c;比较闷骚。可…

Linux 进程、父进程、子进程

进程和程序的区别 一、 进程是动态的&#xff0c;程序是静态的&#xff1a;程序是有序代码的集合&#xff0c;进程是程序的执行。进程有核心态/用户态。 二、 进程是暂时的&#xff0c;程序是永久的&#xff1b;进程是一个状态变化的过程&#xff0c;程序可以长久保存 三、进…

几款开源富文本编辑器优缺点比较

1、百度UEditor 优点&#xff1a;插件多&#xff0c;基本满足各种需求&#xff0c;类似贴吧中的回复界面。缺点&#xff1a;不再维护&#xff0c;文档极少&#xff0c;使用并不普遍&#xff0c;图片只能上传到本地服务器&#xff0c;如果需要上传到其他服务器需要改动源码&…

C程序的储存空间是如何分配?

可执行程序包括BSS段、数据段、代码段。 在类UNIX系统下可使用size命令查看可执行文件的段大小信息。如size a.out&#xff1a; ~/Desktop/MyC$ size a.outtext data bss dec hex filename1672 600 8 2280 8e8 a.out1.数据段存放已初始化的全…

详细讲解Android的网络通信(HttpUrlConnection和HttpClient)

前言&#xff0c;Android的网络通信的方式有两种&#xff1a;使用Socket或者HTTP&#xff0c;今天这一篇我们详细讲解使用HTTP实现的网络通信&#xff0c;HTTP又包括两种方式编程方式&#xff1a; &#xff08;1&#xff09;HttpUrlConnection&#xff1b; &#xff08;2&#…

常见通信协议HTTP、TCP、UDP的简单介绍

TCP HTTP UDP:都是通信协议&#xff0c;也就是通信时所遵守的规则&#xff0c;只有双方按照这个规则“说话”&#xff0c;对方才能理解或为之服务。TCP HTTP UDP三者的关系:TCP/IP是个协议组&#xff0c;可分为四个层次&#xff1a;网络接口层、网络层、传输层和应用层…

创建进程相关函数

fork函数 pid_t fork(void); fork函数调用成功&#xff0c; 返回两次 在fork函数执行完毕后 如果创建新进程成功&#xff0c;则出现两个进程 一个是子进程&#xff0c;一个是父进程 在子进程中&#xff0c;fork函数返回0 在父进程中&#xff0c;fork返回新创建子进程的进程ID…

实现Windows和Linux之间的文件共享

一、windows 向linux共享文件(这里都是以win10和ubuntu为例)首先&#xff0c;打开网络共享中心。如图1图1打开更改高级共享设置&#xff08;图2&#xff09;图 2选择启用网络发现以及启用文件和打印机共享&#xff0c;然后点击保存更改。接着&#xff0c;选择你要共享的文件夹&…

鸡啄米MFC教程笔记之七:对话框:为控件添加消息处理函数

MFC为对话框和控件等定义了诸多消息&#xff0c;我们对它们操作时会触发消息&#xff0c;这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息&#xff0c;修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果&#xff0c;我们只需要实…

进程的退出方式以及僵尸进程和孤儿进程

&#xff08;1&#xff09;正常退出 &#xff08;2&#xff09;异常退出 检查wait和waitpid所返回的终止状态的宏 宏说明WIFEXITED(status)若为正常终止子进程返回的状态&#xff0c;则为真。对于这种情况可执行WEXITSTATUS(status)&#xff0c;取子进程传送给exit、_exit或_…

java中的动态代理----自己手动实现

代码使用了common-io&#xff0c;需要其jar 1 接口 Java代码 public interface Pruduct { void selling(); } 2 书籍类 Java代码 public class Book implements Pruduct { Override public void selling() { try { Thread.sleep(1000…

Code Project精彩系列(1)

ApplicationsCrafting a C# forms Editor From scratchhttp://www.codeproject.com/csharp/SharpFormEditorDemo.asp建立一个类似C#的环境, 实现控件拖拉&#xff0c;属性Packet Capture and Analayzer网络封包截获http://www.codeproject.com/csharp/pacanal.aspA tool to cha…

Code Project精彩系列(2)

Windows FormsFireball Resourcer把各种资源嵌入应用程序资源Window Hiding with C#隐藏窗体, 似乎是其它运行的窗体 JProper Threading in Winforms .NETWindows Forms User Settings in C#使用VS设置设定forms, coolA Pretty Good Splash Screen in C#一个自绘可爱屏幕A curt…

python bool值要注意的一些地方

1、像(),[],{}这三个是可以通过bool(()),bool([]),bool({})转化为bool值的&#xff1b;且它们转化后的结果为False。但是这三个值它本身并不等于False、切记不可以与False 直接进行比较。 #!/usr/bin/python #!coding:utf-8 import sysif __name__ "__main__":falseL…

前端必备知识点—SVG

基本内容什么是SVG? 全称为Scalable Vector Graphics&#xff0c;是一种使用XML技术描述二维图形的语言&#xff0c;简单来说 - 矢量图(不失真)SVG与HTML5的关系早在HTML5之前,存在SVG技术SVG文件扩展名为".svg"在HTML5出现之前,要在HTML页面中引入SVG文件在HTML5出…

CocoaPods安装和使用及问题:Setting up CocoaPods master repo

CocoaPods是什么&#xff1f; 当你开发iOS应用时&#xff0c;会经常使用到很多第三方开源类库&#xff0c;比如JSONKit&#xff0c;AFNetWorking等等。可能某个类库又用到其他类库&#xff0c;所以要使用它&#xff0c;必须得另外下载其他类库&#xff0c;而其他类库又用到其他…

进程间的通信IPC(无名管道和命名管道)

进程间的通信IPC介绍 进程间通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09;是指在不同进程之间传播或交换信息。 IPC的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket…

那些关于浏览器的趣图和幽默段子

1、当浏览器化作一种枪&#xff0c;你喜欢用哪种呢&#xff1f;2、这神奇的反射弧&#xff0c;有点长…3、浏览器们成长的烦恼4、这么说来&#xff0c;IE浏览器扳回一分&#xff01;5、如何用浏览器区分 HTML和 HTML56、都在吹牛&#xff0c;还是IE最务实&#xff01;7、主流浏…

前端新手程序员不知道的 20个小技巧

1.作为前端开发者&#xff0c;使用双显示器能大幅提高开发效率。2.学编程最好的语言不是PHP&#xff0c;是English。3.东西交付之前偷偷测试一遍。4.问别人之前最好先自己百度&#xff0c;google一下&#xff0c;以免问出太低级的问题。5.把觉得不靠谱的需求放到最后做&#xf…