关于函数接口的认识和学习

1.复习拷贝文件的流程:
a.打开文件:fopen
b.文件的读写:fgetc/fputc/fgets/fputs
c.关闭文件:fclose

注意:全缓存的缓存区大小为4k,所以定义了一个4096字节的char数组。打开两个目标文件和源文件,定义两个指针指向他们。


1.函数接口:
    1.fwrite 
      size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
      功能:
        向流中写入nmemb个对象,每个对象size字节大小,在ptr指向的空间中
      参数:
        ptr:存放数据空间的首地址
        size:每个数据对象的大小
        nmemb:数据对象的个数
        stream:文件流指针
      返回值:
        成功返回写入对象的个数
        失败返回0
        读到文件末尾返回0 

    2.fread 
      size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
      功能:
        从流中读取nmemb个对象,每个对象size个字节,存放到ptr指向的空间中
      参数:
        ptr:存放读取内容空间首地址
        size:读取对象的大小
        nmemb:读取对象的个数
        stream:文件流指针 
      返回值:
        成功返回读到对象个数
        失败返回0
        读到文件末尾返回0 

    练习:
        1.利用fread和fwrite完成将src.jpg图片内容拷贝到dst.jpg图片中 
    

2.利用fread将bmp照片中的宽和高读出来打印出来

    3.fprintf 
      int fprintf(FILE *stream, const char *format, ...);
      功能:
        将格式化字符串输出到stream指向的流中

        printf
        fprintf(stdout, );

    4.fsancf 
      int fscanf(FILE *stream, const char *format, ...);
      功能:
        从流中读取格式化的字符串
    
2.流的定位:
    1.ftell
      long ftell(FILE *stream);
      功能:
        获得流的偏移量

    2.rewind
      void rewind(FILE *stream);
      功能:
        将流的偏移量重新设置到开头

    3.fseek 
      int fseek(FILE *stream, long offset, int whence);
      功能:
        设置流的偏移量
      参数:
        stream:文件流指针
        offset:偏移量
            > 0 向后偏移
            < 0 向前偏移
        whence:
            SEEK_SET    文件开头
            SEEK_CUR    文件当前位置
            SEEK_END    文件末尾
   

 练习:从终端输入一个单词,获得单词的含义

​
int main(void)
{
	char s[256]={0};                      //定义一个接收查找单词的字符型数组
	char tmpbuff[4096];                   //定义一个接收词库的字符型数组
	char* ptmp = NULL;
	char *pret = NULL;
	printf("input your find word : ");
	scanf("%s",s);                      //从终端提取查找的单词放在s地址中

	FILE* fp = NULL;
	fp = fopen("dict.txt","r");          

	if(NULL == fp)
	{
		perror("fail to fpoen");
		return -1;
	}

	while(1)
	{
		pret = fgets(tmpbuff,sizeof(tmpbuff),fp);     //提取词库每一行的单词和注释放在tmpbuff
		if(pret == 0)                                 //fgets的返回值为0说明无法读取到了
		{
			break;
		}
	
	ptmp = tmpbuff;                                   //让ptmp和tmpbuff的指针初始化在相同的位置
	while(*ptmp != ' '&&*ptmp !='\0')                  //识别到单词后的空格停下
	{
		ptmp++;                                       //识别不是空格,让ptmp指针不断向后移动
	}
	*ptmp = '\0';                              //识别为空格的地方换成'\0',便于后面比较字符时候可以将\0前面的单词识别为一个字符串
	ptmp++;

	while(*ptmp == ' ')  
	{ 
		ptmp++;                             //让ptmp指针跳过空格的位置,指向注释字符串的第一个字符
	}
	if(strcmp(s,tmpbuff)==0)                 //比较单词字符串和查找字符的大小,相等返回值为0,找到!
	{
		printf("%s",ptmp);                  //打印出上面找到注释第一个字符的地址ptmp所对应的字符串
		fclose(fp);
		return 0 ;
	}
	}
	fclose(fp);
	printf("单词不存在!\n");                  //若是比对不成功,则代表没有这个单词
	return 0 ;
}

​

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大厂设计师亲授:PS 中文设置技巧

Photoshop是Adobe开发的图像处理软件&#xff0c;也是市场上最受欢迎的图像处理软件之一。然而&#xff0c;对于一些不熟悉英语的用户来说&#xff0c;Photoshop的默认语言设置可能会成为使用的障碍。那么&#xff0c;如何将Photoshop设置为中文呢&#xff1f;以下是多个角度的…

day21 图像标签、链接标签

文章目录 图像标签链接标签1.文本超链接2.图像超链接3.页面间链接4.锚链接5.功能性链接 图像标签 常见的图像格式 JPGGIFPNGBMP… <img src"path" alt"text" title"text" width"x" height"y"/>src【必填】&#xff…

前端使用pdf.js进行pdf文件预览的第二种方式:Viewer.html

背景 最近需要实现一个PDF文档预览的功能&#xff0c;按理说&#xff0c;如果只是简单的预览&#xff0c;使用<embed>、<object>等就可以实现。 但是&#xff0c;我们的需求要实现搜索&#xff01;而且&#xff0c;文档还都超大&#xff0c;均300页以上。那<e…

###C语言程序设计-----C语言学习(9)#函数基础

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 一. 基础知识的学习 1.函数的定义 函数是一个完成特定工作的独立程序模块&…

Stable Diffusion 模型下载:国风3 GuoFeng3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十推荐提示词下载地址模型介绍 欢迎使用GuoFeng3模型 - 这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 条目内

Tauri:相比Electron,还有很长路要走的。

一、Tauri是什么 Tauri是一个开源的框架&#xff0c;用于构建跨平台的桌面应用程序。它允许开发者使用Web技术&#xff08;如HTML、CSS和JavaScript&#xff09;来构建高性能的本地应用程序&#xff0c;同时提供了访问底层操作系统功能的能力。 Tauri的设计目标是提供一种简单…

js改善轮播图(transform)时内部文本上下闪动问题

前些天绘制轮播图时&#xff0c;发现轮播图中不同span标签内&#xff08;样式不同&#xff09;文字上下跳动。 为了防止眩晕在岗位上&#xff0c;需要对其进行改善&#xff0c;试了很多种方法&#xff0c;最后来总结一下&#xff1a; 我的轮播图template代码片段&#xff1a; …

DBeaver连接人大金仓数据库

人大金仓的驱动 1. 打开DBeaver软件&#xff0c;点击“数据库”&#xff0c;选择“驱动管理器” 2. 点击“新建”进行达人大金仓驱动管理器配置。 3、创建驱动-设置&#xff1a;驱动名称、类名、url 驱动名称&#xff1a;人大金仓&#xff1b; 类名&#xff1a;com.kingbas…

2024美赛数学建模A题思路分析 - 资源可用性和性别比例(2)

# 1 赛题 问题A&#xff1a;资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。…

UE中对象创建方法示例和类的理解

对象创建方法示例集 创建Actor示例 //创建一个护甲道具 AProp* armor GetWorld()->SpawnActor<AProp>(pos, rotator); 创建Component示例 UCapsuleComponent* CapsuleComponent CreateDefaultSubobject<UCapsuleComponent>(TEXT("CapsuleComponent&qu…

C++多线程学习[六]: 多线程之间的同步

一、同步问题 实际开发场景中有很多需要同步的情况&#xff0c;例如&#xff0c;音频和视频的同步输出、或者通讯能够第一时间同步接受处理… 二、多线程同步demo 可以看到cond可以阻塞等待&#xff08;wait&#xff09;可以通知一个线程(notify_one)也可以通知所有的线程&am…

Mysql的BufferPool

Mysql的BufferPool Mysql是一个存储数据到磁盘的进程&#xff0c;但是磁盘的速度难以与CPU相比&#xff0c;所以InnoDB存储引擎在处理客户端的请求时&#xff0c;当需要访问某个页的数据时&#xff0c;就会把完整的页的数据全部加载到内存中。将整个页加载到内存中后就可以进行…

2 月 5 日算法练习- 字符串

人物相关性分析 思路&#xff1a;枚举前缀和。枚举字符串中的 Bob 位置利用前缀和来记录&#xff0c;然后枚举 Alice 的位置&#xff0c;通过判断 Bob 在 Alice 前面还是后面来进行不同的前缀和差值计算距离 k 距离中 Bob 的个数求和就是答案&#xff0c;复杂度是 On。注意 Bob…

力扣刷题之旅:进阶篇(一)

力扣&#xff08;LeetCode&#xff09;是一个在线编程平台&#xff0c;主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目&#xff0c;以及它们的解题代码。 --点击进入刷题地址 题目1&#xff1a;三数之和 题目描述&#xff1a; 给定一个包含n个…

算法学习——LeetCode力扣哈希表篇1

算法学习——LeetCode力扣哈希表篇1 242. 有效的字母异位词 242. 有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; 描述 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同…

轻松修复msvcr100.dll丢失的解决方法,修复时需要注意事项

msvcr100.dll文件缺失是一种普遍遇到的电脑问题&#xff0c;此类问题会妨碍一些程序的正常启动或引发其他错误。幸运的是&#xff0c;我们可以采取多种方法修复msvcr100.dll文件。下面将介绍三种常用的解决方法&#xff0c;包括更新电脑系统、使用dll修复工具修复以及手动下载m…

docker安全与https协议

一、docker存在的安全问题 1、docker 自身漏洞 docker 应用本身实现上会有代码缺陷&#xff0c;docker 历史版本共有超过 20 项漏洞 2、docker公有仓库安全问题 docker 提供了 docker hub&#xff0c;可以让用户上传创建的镜像&#xff0c;以便其他用户下载&#xff0c;快速…

Linux内核编译-ARM

步骤一、下载源码及交叉编译器后解压 linux kernel官网 ARM GCC交叉编译器 步骤二、安装软件 sudo apt-get install ncurses-dev sudo apt-get install flex sudo apt-get install bison sudo apt install libgtk2.0-dev libglib2.0-dev libglade2-dev sudo apt install libs…

【Java篇】——浅拷贝or深拷贝

目录 &#x1f6a9;克隆步骤 &#x1f6a9;拷贝 &#x1f388;浅拷贝 &#x1f388;深拷贝 &#x1f6a9;源代码 &#x1f6a9;克隆步骤 Java 中内置了一些很有用的接口 , Clonable 就是其中之一 .【一般接口都是able来设定的&#xff0c;able是可以..的表示一种能力】 …

tab切换

任务描述&#xff1a;鼠标点击不同商品类别标题时切换不同页面 html代码&#xff1a; <div class"tab"><div class"tab-head"><h3>家电</h3><ul><li><a class"active" href"javascript:;"&g…
最新文章