| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1235 人关注过本帖
标题:字符串读取与对比,求思路。。。(我写出来,求高手帮我看看那里有错误)
只看楼主 加入收藏
cz737
Rank: 2
等 级:论坛游民
帖 子:85
专家分:20
注 册:2010-7-7
结帖率:96.3%
收藏
已结贴  问题点数:20 回复次数:18 
字符串读取与对比,求思路。。。(我写出来,求高手帮我看看那里有错误)
[serial#7c5bd907bcd9d8a                       
[serial#cd0dfb7986bda12                       
[serial#392b1b0b5ffb908                       
[serial#df98b9da91778d9                       
[serial#2edf7eec3666d61                       
[serial#ea8ae54d1dab2c4                       
[serial#a905a21c7bb5ec0                       
[serial#31744b65274724b                       
[serial#3afb0368343b3e9                       
[serial#d8d05a096aadec7                       
[serial#8565d4ec9d367b9                       
[serial#916e5322e950cd9                       
[serial#b867c6d44a190eb                       
[serial#712a025540b276d                       
[serial#09d5f5829e0b60e                       
一个文件里有这样的内容,很长,我要怎么判断每一行是不是有相同的呢。。。。。如果有相同的输出相同的行数。。。。。
求个思路,现在脑子很混乱啊
能给出参考代码最好了
我按我的思路写出来了
#include "stdio.h"
    #include "string.h"
    void main()
    {
      char buf[50],doc[5000];
    FILE *key0;
    int i;
             key0 = fopen("key.txt","r");
            if(key0 == NULL)
            {
                printf("open file false\n");
                 return 0;
            }      
    for(i=0;i<100;i++)//这里我是假设文件里面只有100行的
    {        
    fgets(buf, sizeof buf, key0);
    fread(doc, sizeof(char),5000, key0);
   
    if (strstr(doc,buf)!=NULL )
          {
              printf("相同:%s\n", buf);      
          }
          else
          printf("第%d行没有重复的\n",i+1);
    }
fclose(key0);
}


[ 本帖最后由 cz737 于 2010-10-14 22:26 编辑 ]
搜索更多相关主题的帖子: 思路 字符 
2010-10-12 19:41
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
先字符串排序,会吗?

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-12 20:43
sock258
Rank: 2
等 级:论坛游民
帖 子:14
专家分:16
注 册:2010-9-1
收藏
得分:0 
回复 2楼 御坂美琴
怎么可以先字符串排序啊
像afffa和aafff本来不一样的 如果按你说的先排序 那这2串不是变一样了啊
2010-10-12 20:54
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
以下是引用sock258在2010-10-12 20:54:58的发言:

怎么可以先字符串排序啊
像afffa和aafff本来不一样的 如果按你说的先排序 那这2串不是变一样了啊

那你这叫字符排序,因为作用对象是字符

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-12 20:56
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:10 
我帮你写了一下!如有不足望大家指出!呵呵!
程序代码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int Countlines(char* filename)
{
    ifstream ifs(filename);
    string temp;
    int n=0;
    if(ifs.fail())
    {
        cout<<"文件不存在"<<endl;
        return 0;
    }
    else
    {
        while(getline(ifs,temp))
            n++;
    }
    ifs.close();
    return n;
}

int main()
{
    const char* filename="hehe.txt";
    ifstream ifs(filename);
    int n=Countlines("hehe.txt");
    int i=0;
    int flag=0;
    string* a;
    a=new string[n];
    while(!ifs.eof())
    {
        ifs>>a[i];
        i++;
    }
    for(int j=0;j<n;j++)
        cout<<a[j]<<endl;
    cout<<"\n\n";
    for(int i=0;i<n;i++)
        for(int j=i+1;j<n;j++)
        {
            if(a[i]==a[j])
            {
                cout<<a[i]<<"相同的项在"<<i<<"\t"<<j<<""<<endl;
                flag=1;
            }
        }
    if(flag==0)
        cout<<"没有相同的项"<<endl;
}
       

If You Want Something, Go Get It, Period.
2010-10-12 22:05
cz737
Rank: 2
等 级:论坛游民
帖 子:85
专家分:20
注 册:2010-7-7
收藏
得分:0 
以下是引用御坂美琴在2010-10-12 20:43:00的发言:

先字符串排序,会吗?
要排序对比我会,问题我不知道要怎么控制循环来读取这些字符串。。。
我是想先读第一行,然后和下面的对比
再读第二行,对比下面的。。。
依次下去。。。

2010-10-13 14:11
cz737
Rank: 2
等 级:论坛游民
帖 子:85
专家分:20
注 册:2010-7-7
收藏
得分:0 
以下是引用m21wo在2010-10-12 22:05:45的发言:

我帮你写了一下!如有不足望大家指出!呵呵!#include  
#include  
#include  
using namespace std;
int Countlines(char* filename)
{
    ifstream ifs(filename);
    string temp;
    int n=0;
    if(ifs.fail())
    {
        cout<<"文件不存在"<
        return 0;
    }
    else
    {
        while(getline(ifs,temp))
            n++;
    }
    ifs.close();
    return n;
}
 
int main()
{
    const char* filename="hehe.txt";
    ifstream ifs(filename);
    int n=Countlines("hehe.txt");
    int i=0;
    int flag=0;
    string* a;
    a=new string[n];
    while(!ifs.eof())
    {
        ifs>>a;
        i++;
    }
    for(int j=0;j
        cout<<
    cout<<"\n\n";
    for(int i=0;i
        for(int j=i+1;j
        {
            if(a==a[j])
            {
                cout<<<"相同的项在"<<<"\t"<<<"列"<
                flag=1;
            }
        }
    if(flag==0)
        cout<<"没有相同的项"<
}
        
看不大明白啊。。
2010-10-13 14:12
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
这就是在你当前文件hehe.txt中读取字符串啊!

If You Want Something, Go Get It, Period.
2010-10-13 17:13
cz737
Rank: 2
等 级:论坛游民
帖 子:85
专家分:20
注 册:2010-7-7
收藏
得分:0 
回复 9楼 孙姓妇女
本来就是读文本文件,里面的内容都是换了行,一行行的啊
2010-10-14 22:31
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
如果文件行数过多的话,n^2 的复杂度是受不了的,尤其串的比较也不是很廉价。先排一下序,就可以让一样的行在一起,这样再找相同的行就方便多了。
2010-10-14 23:06
快速回复:字符串读取与对比,求思路。。。(我写出来,求高手帮我看看那里有错误 ...
数据加载中...
 
   



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

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