社区
C语言
帖子详情
操作文件,给个思路
painAndhappy
2005-06-09 12:27:15
两个文件:主文件和数据文件.
把两个文件中,KEY匹配的数据抽出,然后放入另外一个文件.
希望各位能给个思路,包括变量的定义与函数的分割.
...全文
283
18
打赏
收藏
操作文件,给个思路
两个文件:主文件和数据文件. 把两个文件中,KEY匹配的数据抽出,然后放入另外一个文件. 希望各位能给个思路,包括变量的定义与函数的分割.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
painAndhappy
2005-06-12
打赏
举报
回复
非常感谢大家的帮助!
dinner3000
2005-06-10
打赏
举报
回复
楼上的搞什么飞机?
painAndhappy
2005-06-10
打赏
举报
回复
TO : garfunkle(摇滚下的蛋)
谢谢回答!对于输入(主文件及数据文件)和输出,使用的都是文本文件.
方法应该是可行的.但是,如果这样的话,因为每次都要遍历数据文件,效率可能比较低.
51365133
2005-06-10
打赏
举报
回复
#include "stdio.h"
#include "stdlib.h"
int main()
{
FILE *fp;
char *str="i love c and c++";
if((fp=fopen("d:\\data.txt","w"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
fwrite(str,sizeof(str),sizeof(str),fp);
fclose(fp);
system("pause");
return 0;
}
dinner3000
2005-06-10
打赏
举报
回复
主文件
ID1 ID2 NAME
===================
001 0001 zhao
002 0002 qian
003 0003 sun
004 0004 li
数据文件
ID1 ID2 AGE TEL
==============================
001 0001 11 11111111 ------>数据A
001 0002 12 12121212 ------>数据B
003 0003 33 33333333 ------>数据C
上述数据中,KEY为ID1和ID2,则"数据A"和"数据C"因为能在主文件中找到对应的KEY,所以抽出,
放入另外一个文件.
基本就是这么一个东东.
=====================================================================================
具体实现:
要从数据文件中匹配到:
001 0001 zhao
awk -F"\t" '{ if ( $1=="001" && $2=="0001" ) { print; } }' 数据文件 >> 导出文件
|
+---以tab为列分隔符
可以用shell或者C++程序动态生成上面的语句
dinner3000
2005-06-10
打赏
举报
回复
unix下的话,建议用脚本,速度不比C++慢,而且比较灵活,你可以参考一下AWK,和SORT的用法,结合管道,应该很容易实现你说的功能,前一阵,由于工作需要用上述方法实现了类似文本型数据库操作的程序
darkwanderer
2005-06-10
打赏
举报
回复
我在作的一个东西跟楼主的要求有些相关性,我把我的想法说一下,如果对楼主有帮助就最好了。
对于文件的每一个记录而言,需要记录下所有的字段的值,以方便以后的比较和复制字段的值等操作。为了有普适性,建立如下的结构体:
struct RECORD_INFO {
int item_cnt;
char *item_list[MAX];
char work_buf[LENG];
};
从文件里读一行数据,放入work_buf中,然后写一个函数(主要是过滤空格和TAB之类的),将该条记录的每个字段在work_buf中的地址记录下来,依次放入item_list中,如此,通过item_list就可以方便的检索到每条记录的各个字段的值了。
由于不知道你的两个文件之间的ID的依赖关系,所以做最一般的处理:
首先,把主文件的所有记录进行逐条读取,通过上面所进行的操作,可以把ID都取出来,放在一个存放主文件ID的结构体数组里。然后开始读数据文件,对于每一条记录,取到其ID,与已经读取的主文件ID逐条比较,如果符合,取出要取的字段的值,如此循环。
思路如上,程序我就不提供了。:)
painAndhappy
2005-06-10
打赏
举报
回复
自己再顶一下.
garfunklett
2005-06-10
打赏
举报
回复
首先 写一个 一次读一条记录的函数(主文件和数据库文件如果格式不同的话 就分别写)
然后 建立 两个叫做temp1 temp2 的struct 一个用来存当前的主文件记录 一个用来存当前数据库文件
然后
打开主文件;
打开用来输出的文件;
读主文件一条记录到struct temp1;
while(主文件还有内容)
{
打开数据库文件;
读一条数据库文件到temp2;
while(数据库文件还有内容)
{
if(temp1&temp2中的 id1 和 id2相等)
输出此条记录到输出文件;
读一条数据库文件记录到temp2;
}
读一条主文件记录到temp1;
}
是这个意思么?使用的文件么? 还是使用数据库了?
garfunklett
2005-06-10
打赏
举报
回复
不知道你的一条 是不是就是一行 反正肯定有一定的格式
painAndhappy
2005-06-09
打赏
举报
回复
To:dinner3000(dinner3000)
是UNIX编程
jixingzhong(瞌睡虫)
正如5420(薰衣草)所说的,数据条数预先无法得知。
而如果每次对应与数据文件的一条数据,都要重新去读一遍主文件进行遍历的话,效率就太低了。
5420
2005-06-09
打赏
举报
回复
楼上的行不能,如你所说建立两个结构体,但是结构体内元素个数从何得知,楼主只是举了个例子,但是是特殊情况,可是写出来的程序要有通用性!
jixingzhong
2005-06-09
打赏
举报
回复
建立两个结构体,依次对应主文件和数据文件,(结构提和文件的内容要呼应!!)
循环读取数据,并且比较两个结构体的KEY项,
相等时,将对应于数据文件的结构体中的非KEY项的内容写入新建的一个文件。
直到文件结素,数据抽取完毕。
dinner3000
2005-06-09
打赏
举报
回复
你是unix编程还是windows?
tian_su
2005-06-09
打赏
举报
回复
学习
关注
painAndhappy
2005-06-09
打赏
举报
回复
自己顶一下.
painAndhappy
2005-06-09
打赏
举报
回复
比如说
主文件
ID1 ID2 NAME
===================
001 0001 zhao
002 0002 qian
003 0003 sun
004 0004 li
数据文件
ID1 ID2 AGE TEL
==============================
001 0001 11 11111111 ------>数据A
001 0002 12 12121212 ------>数据B
003 0003 33 33333333 ------>数据C
上述数据中,KEY为ID1和ID2,则"数据A"和"数据C"因为能在主文件中找到对应的KEY,所以抽出,
放入另外一个文件.
基本就是这么一个东东.
zhousqy
2005-06-09
打赏
举报
回复
描述太模糊
考虑 Stribeck 摩擦特性的无刷直流电机驱动 EMB 执行器耦合建模及仿真分析(Simulink仿真实现)
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型
文件
,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。
【Python编程】Python数据类dataclass与attrs库对比
内容概要:本文深入对比Python数据类声明的两种主流方案,重点分析dataclasses模块(PEP 557)与attrs第三方库在功能覆盖、性能开销、扩展生态上的差异。文章从样板代码(boilerplate)消除出发,详解@dataclass装饰器的frozen/unsafe_hash/order/slot参数语义、field()函数的默认值工厂与元数据配置、以及__post_init__的初始化后处理钩子。通过代码示例展示attrs的validators验证器、converters类型转换器、以及auto_attribs的PEP 526注解兼容模式,同时介绍cattrs的序列化/反序列化适配、Pydantic的BaseModel运行时校验增强、以及marshmallow的Schema显式定义,最后给出在配置对象、DTO传输、领域模型等场景下的数据类选型建议与版本兼容性策略。 直播下载:fengcaisy.com 直播下载:m.guan-long.cn 24直播网:m.dlboligang.com 24直播网:cpl520.com 24直播网:m.dlsyhm.com
易语言源码用超级列表框模仿Delphi表格
易语言源码用超级列表框模仿Delphi表格
易语言源码应用程序图标修改器源码
易语言源码应用程序图标修改器源码
易语言源码支持盛大英雄和商铺的传奇登陆器
易语言源码支持盛大英雄和商铺的传奇登陆器
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章