佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 905|回复: 8

不明白如何做string的comparation[C Programming]

[复制链接]
发表于 29-6-2006 09:37 PM | 显示全部楼层 |阅读模式
今天拿了assignment的问题,
做到一半突然遇到string的comparation的问题。

想来想去都想不到如何做compare。

比如说:

char string1[]={"ABCDABCDABCD"};
char string2[]={"ABDDABBCADCD"};

如何才能算出这两个string只见有多少个不同点或同点?
以上2个string共有4个不同点,
如何才能用command算出来?

我用strcmp(string1,string2),
可是都不能!



[ 本帖最后由 N|GhT_K|L|Er 于 29-6-2006 09:40 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 29-6-2006 10:46 PM | 显示全部楼层
假设string1和string2的长度都一样,用for loop.逐字对照

#include <iostream>
using namespace std;

int main() {
        int counter=0;
        char string1[]={"ABCDABCDABCD"};
        char string2[]={"ABDDABBCADCD"};
        for (int i=0; i<strlen(string1); i++) {
                if (string1 != string2)
                        counter++;
        }
        cout << "Total number of different chars: " << counter << endl;
        return 0;
}
回复

使用道具 举报

 楼主| 发表于 30-6-2006 12:15 AM | 显示全部楼层
原帖由 vj 于 29-6-2006 10:46 PM 发表
假设string1和string2的长度都一样,用for loop.逐字对照

#include <iostream>
using namespace std;

int main() {
        int counter=0;
        char string1[]={"ABCDABCDABCD"};
        char string2[ ...

谢谢
可惜我的是C,不是C++

不过我也想到了一个方法

#include <stdio.h>

main()
{
        int correct=0;
        char string1[]={"ABCDABCDABCD"};
        char string2[]={"ABDDABBCADCD"};
        for (int i=0; i<12; ++i)
            if (string1 == string2)
                correct+=1;
        printf("There are %d numbers of string2 matched with string1",correct);
}
回复

使用道具 举报

发表于 30-6-2006 12:21 AM | 显示全部楼层
改自vj二楼的,令程序能process不同length的string.
不知道这样做是否有优化到吗?


#include <iostream>
using namespace std;

int main() {
        int counter=0;
        int max, min ;
        
        char string1[] ;
        char string2[] ;
        cout<<"Insert first String"<<endl ;
        cin>>string1[] ;
        cout<<"Insert second String"<<end ;
        cin>>string2[] ;
        if (strlen(string1)>strlen(string2))
        {      max=strlen(string1) ;
               min=strlen(string2) ;
        } else
        {      max=strlen(string1) ;
               min=strlen(string2) ;
        }      
        for (int i=0; i<min; i++) {
                if (string1 != string2)
                        counter++;
        }
        counter=counter + (max-min) ;
        cout << "Total number of different chars: " << counter << endl;
        return 0;
}
回复

使用道具 举报

ngguowei 该用户已被删除
发表于 4-7-2006 03:14 AM | 显示全部楼层
原帖由 vj 于 29-6-2006 10:46 PM 发表
假设string1和string2的长度都一样,用for loop.逐字对照

#include <iostream>
using namespace std;

int main() {
        int counter=0;
        char string1[]={"ABCDABCDABCD"};
        char string2[]={"ABDDABBCADCD"};
        for (int i=0; i<strlen(string1); i++) {
                if (string1 != string2)
                        counter++;
        }
        cout << "Total number of different chars: " << counter << endl;
        return 0;
}


嗯。。。基础还不是很好啊!
回复

使用道具 举报

发表于 4-7-2006 09:17 AM | 显示全部楼层
原帖由 ngguowei 于 4-7-2006 03:14 AM 发表


嗯。。。基础还不是很好啊!

有没有注意到string2为什么是斜体?
回复

使用道具 举报

Follow Us
发表于 4-7-2006 09:26 AM | 显示全部楼层
原帖由 ngguowei 于 4-7-2006 03:14 AM 发表
嗯。。。基础还不是很好啊!


没有错,只是他的[ i ]被编辑器吃掉了,发文章的时候要禁用Discuz!代码。应该改过来。
回复

使用道具 举报

ngguowei 该用户已被删除
发表于 4-7-2006 01:39 PM | 显示全部楼层
sorry!! sorry!明白了。。。嘻嘻。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 6-7-2006 07:01 AM | 显示全部楼层
strcmp 是要比较 ==0 的。

==

建议尽量用STL 吧, 新世代的代码都会用STL。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-9-2024 03:28 AM , Processed in 0.314080 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表