| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10097 人关注过本帖, 1 人收藏
标题:如何用C编写在文件内查找一个字符串?
只看楼主 加入收藏
brisk
Rank: 1
等 级:新手上路
帖 子:29
专家分:8
注 册:2011-3-26
结帖率:66.67%
收藏(1)
已结贴  问题点数:10 回复次数:2 
如何用C编写在文件内查找一个字符串?
如果我有个文件a.txt那么这时我输入一个字符串,请问如何去查找a.txt中是否有这个字符串?
搜索更多相关主题的帖子: 字符串 
2011-05-16 23:26
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
收藏
得分:5 
之前学数据结构的时候有个模式匹配算法
int PatrPosition(STring S,STring T,int k)      //学过数据结构没? 先定义一个结构体 typedef struct {
                                                                                                     char ch[maxsize];
                                                                                                     int length;
                                                                                                     }STring;
                                                            第一次回复 ,楼主要是还不是很明白请 看一下数据结构上面 模式串匹配算法...
{
   int i=k-1;   //主串的下标
   j=0;        //模式串的下标
  while(i<S.length-1&&j<T.length-1)
   {
          if(S.ch[i]==T.ch[j])
            {i++;j++}
          else
              {i=i-j+1;j=0}

   }
 if(j>=T.length-1)
    return 1;
else
  return 0;
}
2011-05-17 08:39
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:5 
程序代码:
#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 则代表这个文件中包含该字符串,无任何输出则代表不能匹配该字符串。
注意:
如果一个字符串在文件中是以换行分隔的,则不能匹配。
如你需要匹配的字符串是 "beautiful"
a.txt中的文本是:
图片附件: 游客没有浏览图片的权限,请 登录注册

在第一行中最后4个字符是"beau"可以和下一行的"tiful"组合起来匹配"beautiful",
但在这个程序中不能匹配,当然如果需要,你也可以修改一下代码,则也能达到这个目的。

My life is brilliant
2011-05-17 16:04
快速回复:如何用C编写在文件内查找一个字符串?
数据加载中...
 
   



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

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