查看: 913|回复: 8
|
不明白如何做string的comparation[C Programming]
[复制链接]
|
|
今天拿了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 编辑 ] |
|
|
|
|
|
|
|
发表于 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;
} |
|
|
|
|
|
|
|
发表于 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为什么是斜体? |
|
|
|
|
|
|
|
发表于 4-7-2006 09:26 AM
|
显示全部楼层
原帖由 ngguowei 于 4-7-2006 03:14 AM 发表
嗯。。。基础还不是很好啊!
没有错,只是他的[ i ]被编辑器吃掉了,发文章的时候要禁用Discuz!代码。应该改过来。 |
|
|
|
|
|
|
|
发表于 4-7-2006 01:39 PM
|
显示全部楼层
sorry!! sorry!明白了。。。嘻嘻。。。 |
|
|
|
|
|
|
|
发表于 6-7-2006 07:01 AM
|
显示全部楼层
strcmp 是要比较 ==0 的。
==
建议尽量用STL 吧, 新世代的代码都会用STL。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|