| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 295 人关注过本帖
标题:在文本中查找字符串(参考,仅限ANSI ASCII)
只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
结帖率:94.64%
收藏
 问题点数:0 回复次数:0 
在文本中查找字符串(参考,仅限ANSI ASCII)
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define stringSize(string) (sizeof(string) * sizeof(char))

void contains(char *, int, FILE *);

int main(void) {
    FILE * fp;
    char * fileName = "a.txt";  // 这里输入你的文本文件名
    char str[] = "beautiful";   // 这里输入你想查找的字符串

    if((fp = fopen(fileName, "rb")) == 0) {
        printf("Can't open %s, program will to exit.", fileName);
        exit(1);
    }
    contains(str, stringSize(str), fp);
    fclose(fp);
    return 0;
}

void contains(char * string, int stringSize, FILE * fp) {
    int i = 0, j, end;
    char * part = (char *)calloc(stringSize, sizeof(char));
    fseek(fp, 0L, SEEK_END);
    end = ftell(fp) - stringSize + 2;

    while(i < end) {
        j = 0;
        fseek(fp, (long)i++, SEEK_SET);
        fgets(part, stringSize, fp);
        while(*part) {
            if(*string == *part) {
                j++;
                string++;
                part++;
                continue;
            }
            break;
        }
        if(j == stringSize - 1) {
            printf("OK\n");
            break;
        } else {
            string -= j;
            part -= j;
        }
    }
    free(part);
}
输出OK则代表对应文本中包含该字符串,无任何输出则表示不包含该字符串。
注意:以换行结尾不能匹配,如
char str[] = "beautiful";

a.txt
//:start
1111111beau
tiful&&&&&!!
@@@@@@@@@@@
##########
//:end

第一行的最后4个字符beau和第二行的tiful可以组合成beautiful但在这个程序中不能匹配,如果你需要小改一下代码即可。

[ 本帖最后由 lz1091914999 于 2011-5-18 20:30 编辑 ]
搜索更多相关主题的帖子: 字符串 
2011-05-18 20:27
快速回复:在文本中查找字符串(参考,仅限ANSI ASCII)
数据加载中...
 
   



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

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