社区
C语言
帖子详情
操作文件,给个思路
painAndhappy
2005-06-09 12:27:15
两个文件:主文件和数据文件.
把两个文件中,KEY匹配的数据抽出,然后放入另外一个文件.
希望各位能给个思路,包括变量的定义与函数的分割.
...全文
229
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
打赏
举报
回复
描述太模糊
【
操作
系统】简易
文件
系统设计
【
操作
系统】 简易
文件
系统 这个是本学期最后一次的
操作
系统实验,个人觉得做得还行,故写篇博客分享一下。 实验要求 创建一个100M的
文件
或者创建一个100M的共享内存 尝试自行设计一个C语言小程序,使用步骤1分配的100M空间(共享内存或mmap),然后假设这100M空间为一个空白磁盘,设计一个简单的
文件
系统管理这个空白磁盘,给出
文件
和目录管理的基本数据结构,并画出
文件
系统基本结构图,以及基本
操作
接口。(30分) 在步骤1的基础上实现部分
文件
操作
接口
操作
,创建目录mkdir,删除目录rmdir
Python
文件
的读写
操作
文章目录一、Python
文件
读写概述二、使用 open() 打开
文件
三、使用 read()、readline()、readlines() 读取数据四、使用 write()、writelines() 写入
文件
最后 一、Python
文件
读写概述 Python 在
文件
读写
操作
中,会使用「内置函数」和「Pandas 库」两种方式。 先来看内置函数,包括 open()、read()、readline()、readlines()、write()、writelines()、close() 等方法,也是接下来给大家详
VBA判断
文件
是否存在及问
文件
备份
思路
对
文件
进行保存的时候,可能会遇到已经存在相同
文件
名的
文件
。此时,再次进行保存的时候会发生异常,那么想要保存当前这个
文件
的时候,我们就需要判断
文件
是否存在。如果
文件
存在我们就 Kill(fileName) ,然后再进行保存
操作
。 以上的解决
思路
,面临一个问题,就是一般无法确保
文件
Kill掉的
文件
是否有用。此时,可以通过更改
文件
名(原
文件
名+Time)的方式,进行一个备份。...
自己搭建
文件
服务器的
思路
本人没有使用ftp服务,使用的是 java
文件
上传和tomcat容器虚拟器的方式实现的。 搭建的
思路
图如下: 具体代码如下: A.java本地java项目(关键代码) public class SysOssController { private String remoteServer = "http://x.x.x.x:xxxx"; private String re......
文件
批量提取工具,从大量
文件
中批量提取指定
文件
的实现
思路
,
文件
批量复制
实现一个
文件
夹中有大量的子
文件
夹,要从中批量复制指定的子
文件
夹数据出来,并保持子
文件
夹下内部的目录层级不变
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章