fwrite

C语言实现链表与文件的存取

Deadly 提交于 2020-10-06 12:06:57
作者:柠檬i,学习C时长两个月半的个人练习生 第一次写文章,难免有些不足,请多多包涵。 本程序主要功能是建立链表,然后把链表数据存储到文件中,然后把文件数据存储到数组中并输出。 不多说了,放代码。 此处为main函数的内容 int main ( void ) { char filename [ 50 ] ; printf ( "How many ?: " ) ; scanf ( "%d" , & n ) ; /*输入学生数*/ printf ( "please input filename: " ) ; scanf ( "%s" , filename ) ; /*输入文件所在路径及名称*/ Create ( ) ; //调用函数建立链表 save ( filename ) ; //调用函数存到文件 free ( phead ) ; //释放phead内存 show ( filename ) ; //调用函数输出文件 system ( "pause" ) ; return 0 ; } 一、输入数据到链表中 建立链表并输入数据到链表里 代码如下: typedef struct stu { char name [ 20 ] ; char adr [ 20 ] ; int tel ; struct stu * pnext ; } stu ; int i , n ; //i循环用

C语言位图图像混合求助大佬

妖精的绣舞 提交于 2020-10-02 14:18:16
)3.位图图像混合知识点: 文件读写、 结构体定义、 内存管理、BMP图像数据操作、 命令行参数 要求:编写一个程序,可以在命令行输入参数,完成参数所指定的两幅真彩色位图图像的混合运算,并存储混合后的结果到新文件, 命令行参数如下: blend filel.bmp 80 file2.bmp blended.bmp 第一个参数( blend )为可执行程序名称; 第二个参数为原始图像文件名; 第三个参数为混合比例(百分比),如80表 示filel图像亮度数据*80% + file2 图像亮度数据(1-80%) :结果图像数据); 第四个参数第二幅图像文件名; 第5个参数为结果图像文件名。 说明:请搜索学习:1) C语 言文件操作( fopen, fread , fwrite, fdlose)。百度(2) 位图文件相关结构体( Bitmap, 只针对24bt彩色位图, 每个像素有R G. B三个通道,每个通道1字 节)http:/lbleg.sina. com.cnlslblog.a51895420102ufsw.htmlhtp://bloq. csdn.netlpeiyuWang 2015/ar ticlelde tal5311140https/lmy .oschina netltigerBin1blg1919744tps://blog.csdn.netin10lar

有趣的 zkw 线段树(超全详解)

前提是你 提交于 2020-10-02 12:04:10
zkw segment-tree 真是太棒了(真的重口味)!写篇博客纪念入门 emmm...首先我们来介绍一下 zkw 线段树这个东西( 俗称 "重口味" ,与 KMP 类似,咳咳... ) zkw 线段树的介绍 其实 zkw 线段树和普通线段树区别没多大(区别可大了去了!) emmm...起码它们的思想是一致的,都是节点维护区间信息嘛。 只不过...普通线段树的维护和查询是递归式,而 zkw线段树是循环式的... 但是不要以为 zkw线段树只是靠循环加速上位的! zkw线段树能支持非常多强(luan)如(qi)闪(ba)电(zao)的操作(最后例题讲)。 zkw 线段树 与普通线段树 的比较 emmm...这里你看着 普通线段树 的节点比 zkw线段树 的小对吧,但其实两者差不多,(因为线段树是要开4倍空间的啊,这里只是没有画出用不到的节点罢了), zkw 线段树的形态 其实上图...还是无法体现zkw 线段树的具体形态的, (但是相信聪明的你一定看懂了所以我就不讲了) emmm...于是乎还是上图解释一切 zkw 线段树的建立 首先你要写个循环,让 m 这个值(也就是非叶子节点)大于 n (也就是总叶子结点数), 以此保证 这棵树的叶子 能够容纳你要维护的 n 个值 然后你要从 m 倒推 到 1 号节点 (注意是 m 倒推回 1 ,保证维护每个节点时该节点的孩子都已经被维护完毕

GDOI2020 游记

房东的猫 提交于 2020-08-18 08:49:25
Day -6 真的啥都不想说。 感觉就是颓了一年,啥都没学。 知识点,点分家族、字符串、网络流一无所知。更别说技巧和套路了。 代码能力也下降了好多。 今年是真的药丸。 Day -4 开始停课。 第一天模拟赛就被打爆,Tairitsu 拼成了 Tairtsu 丢了 100 分,希望在考场上不会有这种垃圾错误(flag*1) Day -3 又一次模拟赛被打爆,暴力写挂。 Day -2 今天没有模拟赛,开冲模板。 大概要写 SAM,PAM,Lyndon 分解,扩展 KMP,回滚莫队,树上莫队,点分树,边分治,KD 树,李超树,上下界网络流,最小割树,n 次剩余,扩展 BSGS,扩展 Lucas,扩展 CRT,类欧,min_25 筛,BM…… 啊啊啊我去年都干了些啥??? 然后最后写了的只有 PAM,Lyndon 分解,扩展 KMP,回滚莫队,点分树和上下界网络流,大概没救了。 Day -1 模拟赛又被打爆了。卡常卡精度的题,我选了精度,然后被卡常了。赛后发现 double 都能过。 下午接着冲模板。 效率甚至更低了,只写了二次剩余、KD 树。 Day 0 已经连续第二个晚上没睡好了…… 发现 Splay, fhq treap, LCT 也都要再写……剩下的模板不管它了…… 奶一口没有边分,有边分就写点分( 奶两口模数都是质数( 奶三口没有类欧、min_25 筛这种奇怪的东西(

PHP + Redis 实现简单消息队列

半腔热情 提交于 2020-08-15 12:26:25
Redis做消息队列的好处在于它的 轻量级,高并发,延迟敏感 ,应用场景有 即时数据分析、秒杀计数器、缓存等 Redis做消息队列待解决的问题: 1、消息的可靠性: 没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理。生产者只管向队列中插入数据,不管消费者是否成功消费。 2、消费者挂掉消息不会丢失,但是需要重新触发一下消费者,才能够继续消费消息。 代码如下: lib.php 是工具文件,里面有数据库的连接、Redis的连接: <?php /** * 获取数据库连接 * * @param $host * @param $username * @param $password * @param $database * @return mysqli */ function getDBConnection($host, $username, $password, $database){ $connection = new mysqli('p:'.$host, $username, $password, $database); if (!$connection) { echo "Error: Unable to connect to MySQL." . PHP_EOL; echo "Debugging errno: " . mysqli_connect_errno

最小表示法

孤者浪人 提交于 2020-08-15 03:56:29
BZOJ_2882_工艺 给出一个字符串,求与它循环同构的串中字典序最小的串。 后缀数组/后缀自动机+map 都可以在O(nlogn)的时间复杂度求出。 实际上有一个专门解决这类问题的算法:最小表示法。 首先把串复制一遍贴在原串后面,这样每个循环同构的串可以用S[i]~S[i+n-1]来表示,设为w(i)。 也就是说我们把所有的串拿出来了,比较就行了。 在比较w(i)和w(j)时的最坏时间复杂度是O(n)的,也就是说这只是一个暴力的做法。 实际上我们不需要对所有的w(i)都进行一次比较。 假设比较w(i)和w(j)时比较了k个字符,直到k+1个字符不同。 那么我们将字典序大的那边指针向后跳k+1即可,因为已经知道有比这些串小的串了(就在另一个指针的后面) 相当于每个指针最多向后跳n次,复杂度就变成O(n)的了,非常好写。 代码: while(i<=n&&j<=n) { for(k=0;k<n&&w[i+k]==w[j+k];k++); if(k==n) break; if(w[i+k]>w[j+k]) { i+=k+1; if(i==j) i++; }else { j+=k+1; if(i==j) j++; } } i=min(i,j); BZOJ_2882代码: #include <cstdio> #include <string.h> #include <algorithm>

php使用shmop函数创建共享内存减少负载

落爺英雄遲暮 提交于 2020-08-12 09:55:22
PHP做内存共享有两套接口。一个是shm,它实际上是变量共享,会把对象变量序列化后再储存。使用起来倒是挺方便,但是序列化存储对于效率优先的内存访问操作而言就没啥意义了。另外一个是shmop,它是Linux和Windows通用的,不过功能上比shm弱了一些,在 Linux 上,这些函数直接是通过调用 shm* 系列的函数实现,而 Winodows 上也通过对系统函数的封装实现了同样的调用。 要创建共享内存段需要使用函数shmop,那么前提需要开启扩展。 shmop主要函数 shmop_open (创建或打开共享内存块)、shmop_write (向共享内存块中写入数据)、shmop_read (从共享内存块中读取数据)、shmop_size (获取共享内存块的大小)、shmop_close (关闭共享内存块)、shmop_delete (删除共享内存块) <?php //创建一块共享内存 $shm_key = 0x4337b101; $shm_id = @shmop_open($shm_key, 'c', 0644, 1024); //读取并写入数据 $data = shmop_read($shm_id, 0, 1024); shmop_write($shm_id, json_encode($data), 0); $size = shmop_size($shm_id); /

最小表示法

℡╲_俬逩灬. 提交于 2020-08-11 19:29:59
BZOJ_2882_工艺 给出一个字符串,求与它循环同构的串中字典序最小的串。 后缀数组/后缀自动机+map 都可以在O(nlogn)的时间复杂度求出。 实际上有一个专门解决这类问题的算法:最小表示法。 首先把串复制一遍贴在原串后面,这样每个循环同构的串可以用S[i]~S[i+n-1]来表示,设为w(i)。 也就是说我们把所有的串拿出来了,比较就行了。 在比较w(i)和w(j)时的最坏时间复杂度是O(n)的,也就是说这只是一个暴力的做法。 实际上我们不需要对所有的w(i)都进行一次比较。 假设比较w(i)和w(j)时比较了k个字符,直到k+1个字符不同。 那么我们将字典序大的那边指针向后跳k+1即可,因为已经知道有比这些串小的串了(就在另一个指针的后面) 相当于每个指针最多向后跳n次,复杂度就变成O(n)的了,非常好写。 代码: while(i<=n&&j<=n) { for(k=0;k<n&&w[i+k]==w[j+k];k++); if(k==n) break; if(w[i+k]>w[j+k]) { i+=k+1; if(i==j) i++; }else { j+=k+1; if(i==j) j++; } } i=min(i,j); BZOJ_2882代码: #include <cstdio> #include <string.h> #include <algorithm>

【FPGA篇章七】FPGA系统任务:详述常用的一些系统函数以及使用方法

强颜欢笑 提交于 2020-08-09 16:28:47
欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 系统任务和系统函数是Verilog标准的一部分,都以字符"$"为开头。系统任务可划分为六类,下面分别给出一些常用任务的用法。 1 显示任务   1.1 display和write任务   向终端或文件写入值时,系统会自动决定表达式参数值的位置大小。   比如一个16bit大小的数,用十六进制需要4个字符宽度(最大FFFF),用十进制需要5个字符宽度(最大65535)。   如果在%和radix间加一个0,可以取消这种自动决定的机制,看下面的示例: 1 reg [ 15 : 0 ] data = 200 ; 2 initial $display( " data: %d. " , data); // data: 200. 数据占5个字符 3 initial $display( " data: %0d. " , data); // data: 200. 数据占3个字符   1.2 strobe监控   $strobe使用的参数(包括所有转义字符、格式控制)和$display完全相同。     这组系统任务$strobe、$strobeb、$strobeo、$strobeh可以在选择的时间点处显示仿真数据。   当前仿真时刻的其它所有语句、事件执行完后,$strobe系统任务才会执行,以确保显示的是正确的数据。示例如下: 1

C语言 文件操作

白昼怎懂夜的黑 提交于 2020-08-05 23:43:24
文件使用方式 含义 r 只读,为输入打开一个文本文件 w 只写,为输出打开一个文本文件 a 追加,向文本文件尾增加数据 rb 只读,为输入打开一个二进制文件 wb 只写,为输出打开一个二进制文件 ab 追加,向二进制文件尾增加数据 r+ 读写,为读取或写入打开一个文本文件 w+ 读写,为读取或写入建立一个新的文本文件 a+ 读写,从文件中读取或写入数据 rb+ 读写,为读或写打开一个二进制文件 wb+ 读写,为读或写建立一个新的二进制文件 ab+ 读写,从二进制文件中读取或写入数据 r: 读 ; w: 写 ; b:二进制 ;+:读写兼备。 文件操作的函数 项目 Value fopen() 打开文件 fclose() 关闭文件 fseek() 改变文件位置指针的位置 rewind() 使文件位置指针指向开头 ftell() 返回文件位置指针的现在值 feof() 文件末尾时,函数值为真 ferror() 文件操作出错,函数值为真 clearerr() 使feof()与ferror()置零 fget(),getc() 从指定文件中去得一个字符 fputc(),putc() 把字符输出到指定文件 fgets() 从指定文件读取字符串 fputs() 把字符串输出到指定文件 getw() 从指定文件读取一个字 putw() 把一个字输出到指定文件 fread() 从指定文件中读取数据项