社区
C语言
帖子详情
操作文件,给个思路
painAndhappy
2005-06-09 12:27:15
两个文件:主文件和数据文件.
把两个文件中,KEY匹配的数据抽出,然后放入另外一个文件.
希望各位能给个思路,包括变量的定义与函数的分割.
...全文
237
18
打赏
收藏
操作文件,给个思路
两个文件:主文件和数据文件. 把两个文件中,KEY匹配的数据抽出,然后放入另外一个文件. 希望各位能给个思路,包括变量的定义与函数的分割.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
描述太模糊
文件
系统(二)—如何设计一个
文件
系统
前面一章主要学习了
文件
系统的存储和分配方式的理论知识,本章接着理论知识,如何设计一个
文件
系统(本章不涉及任何代码实现),其主要的内容包括如下: 如何一步步设计一个
文件
系统,了解
文件
系统由那些组成 当我们...
【
操作
系统】简易
文件
系统设计
使用步骤1分配的100M空间(共享内存或mmap),然后假设这100M空间为一个空白磁盘,设计一个简单的
文件
系统管理这个空白磁盘,给出
文件
和目录管理的基本数据结构,并画出
文件
系统基本结构图,以及基本
操作
接口。...
Python
文件
的读写
操作
Python 在
文件
读写
操作
中,会使用「内置函数」和「Pandas 库」两种方式。 先来看内置函数,包括 open()、read()、readline()、readlines()、write()、writelines()、close() 等方法,也是接下来给大家详
VBA判断
文件
是否存在及问
文件
备份
思路
对
文件
进行保存的时候,可能会遇到已经存在相同
文件
名的
文件
。... 以上的解决
思路
,面临一个问题,就是一般无法确保
文件
Kill掉的
文件
是否有用。此时,可以通过更改
文件
名(原
文件
名+Time)的方式,进行一个备份。...
操作
系统课程设计报告(
文件
系统)
通过一个简单多用户
文件
系统设计,加深对
文件
系统的理解及内部实现。运用多线程的调度尽可能的优化其效率,解决实际问题。 1.1任务要求 B类:用java语言模仿“生产者——消费者”问题 1.通过Java语言中的wait()和...
C语言
70,026
社区成员
243,262
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章