| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2680 人关注过本帖
标题:关于搜索文件关键字的问题,新手求教
只看楼主 加入收藏
c语言超鬼
Rank: 1
来 自:四川
等 级:新手上路
帖 子:34
专家分:0
注 册:2012-9-19
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:12 
关于搜索文件关键字的问题,新手求教
比如这是我电脑里的一个记事本,路径为“E:\wendang.txt”
记事本里边有这些东西:
张三\t13345672345\n
李四\t13098706789\n
王五\t13545376789\n
赵六\t13345678901\n
现在我怎么通过输入关键字来显示出那一行呢?比如说我输入“张”或者“张三”或者“三”或者“133”就可以把记事本中“张三\t13345672345\n”显示在程序里,新手实在不会,看了很久的教材了,还望各位能够帮帮我,谢谢大家了
搜索更多相关主题的帖子: 记事本 
2012-09-20 09:52
c语言超鬼
Rank: 1
来 自:四川
等 级:新手上路
帖 子:34
专家分:0
注 册:2012-9-19
收藏
得分:0 
求高手帮忙解答一下啊、、、、、、

好好学习,天天长高
2012-09-20 10:19
c语言超鬼
Rank: 1
来 自:四川
等 级:新手上路
帖 子:34
专家分:0
注 册:2012-9-19
收藏
得分:0 
悲催啊,没人帮我

好好学习,天天长高
2012-09-20 10:28
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
匹配啊,具体算法就不好说。
看你需求吧。

效率不大,就简单比较。
把数据加载内存, 如果数据量大,就分批加载。

用心做一件事情就这么简单
2012-09-20 10:35
c语言超鬼
Rank: 1
来 自:四川
等 级:新手上路
帖 子:34
专家分:0
注 册:2012-9-19
收藏
得分:0 
回复 4楼 小鱼儿c
不懂。。。。。。

好好学习,天天长高
2012-09-20 10:44
Andony
Rank: 2
等 级:论坛游民
帖 子:38
专家分:60
注 册:2012-9-12
收藏
得分:0 
lz是在windows下的编程吗?我是在linux环境下编程,你提的问题在linux下可以用grep命令搜索文本文件的关键字,然后通过管道或者是重定向的方式输出到指定的地方,windows下就不知道了。

重复的事情用心做,你就是赢家
2012-09-20 11:09
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <string.h>
#define COLS 1000

int main(int argc, char** argv)
{
    char* file_name;
    char* keyword;
    char  line[COLS+1];
    FILE* fp;
   
    if (argc != 3) {
        puts("Usage: File Keyword");
        return 1;
    }
   
    file_name = argv[1];
    keyword   = argv[2];
   
    if ((fp = fopen(file_name, "r")) == NULL) {
        printf("Cannot open file: %s program will exit.");
        return 1;
    }
   
    while (fgets(line, COLS, fp))
        if (strstr(line, keyword))
            printf(line);
   
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 lz1091914999 于 2012-9-20 15:24 编辑 ]

My life is brilliant
2012-09-20 15:21
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用lz1091914999在2012-9-20 15:21:37的发言:

#include  
#include  
#define COLS 1000
 
int main(int argc, char** argv)
{
    char* file_name;
    char* keyword;
    char  line[COLS+1];
    FILE* fp;
   
    if (argc != 3) {
        puts("Usage: File Keyword");
        return 1;
    }
   
    file_name = argv[1];
    keyword   = argv[2];
   
    if ((fp = fopen(file_name, "r")) == NULL) {
        printf("Cannot open file: %s program will exit.");
        return 1;
    }
   
    while (fgets(line, COLS, fp))
        if (strstr(line, keyword))
            printf(line);
   
    return 0;
}

呵呵 有人写好的楼主一定明白了。。 膜拜大牛顺便蹭分
2012-09-20 18:00
liuguanglei
Rank: 2
等 级:论坛游民
帖 子:41
专家分:26
注 册:2012-8-15
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#define COLS 1000

int main(int argc, char** argv)
{
    char* file_name;
    char* keyword;
    char  line[COLS+1];
    FILE* fp;
   
    if (argc != 3) {
        puts("Usage: File Keyword");
        return 1;
    }
   
    file_name = argv[1];
    keyword   = argv[2];
   
    if ((fp = fopen(file_name, "r")) == NULL) {
        printf("Cannot open file: %s program will exit.");
        return 1;
    }
   
    while (fgets(line, COLS, fp))
        if (strstr(line, keyword))
            printf(line);
   
    return 0;
2012-09-20 18:12
c语言超鬼
Rank: 1
来 自:四川
等 级:新手上路
帖 子:34
专家分:0
注 册:2012-9-19
收藏
得分:0 
回复 7楼 lz1091914999
我想问一下大神,我是把这个功能作为一个switch分支来写的,就是case后边的内容,我想把你这个转换过去的,可是我发现变成了这样。。。这是我转换后的代码:
        case 3:
            int argc;
            char **argv;
            char *file_name;
            char *keyword;
            char  line[COLS+1];
            FILE *fp;
            if (argc != 3)
            {
                puts("Usage: File Keyword");
                return 1;
            }
            file_name=argv[1];
            keyword=argv[2];
   
            if ((fp = fopen(file_name, "r")) == NULL)
            {
                printf("Cannot open file: %s program will exit.");
                return 1;
            }
   
            while (fgets(line, COLS, fp))
            if (strstr(line, keyword))
                printf(line);
            break;
这是运行后的程序:


好好学习,天天长高
2012-09-20 21:58
快速回复:关于搜索文件关键字的问题,新手求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022064 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved