关于字符串比较之问题!在线
我想比较两个字符串的前n位是否相同,本来有个函数:
原型:extern int bcmp(const void *s1, const void *s2, int n);
用法:#include <string.h>
功能:比较字符串s1和s2的前n个字节是否相等
说明:如果s1=s2或n=0则返回零,否则返回非零值。bcmp不检查NULL。
但是cb里面不认,头文件也包含了,其实头文件里根本就没有这个函数!!!!c++下有什么函数有相同功能?
问题点数:20、回复次数:10Top
1 楼sunliwen780502(孙立文)回复于 2004-09-02 12:58:33 得分 2
#include <cstring>
或#include <string>
试试!!!
Top
2 楼ahui2k(小刘飞叉)回复于 2004-09-02 13:02:17 得分 0
楼上,刚试完,不好使!我机器里的文件压根就没有这个函数Top
3 楼lovelylulu(forever)回复于 2004-09-02 13:26:41 得分 5
/* STRNCMP.C */
#include <string.h>
#include <stdio.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";
void main( void )
{
char tmp[20];
int result;
printf( "Compare strings:\n\t\t%s\n\t\t%s\n\n", string1, string2 );
printf( "Function:\tstrncmp (first 10 characters only)\n" );
result = strncmp( string1, string2 , 10 );
if( result > 0 )
strcpy( tmp, "greater than" );
else if( result < 0 )
strcpy( tmp, "less than" );
else
strcpy( tmp, "equal to" );
printf( "Result:\t\tString 1 is %s string 2\n\n", tmp );
printf( "Function:\tstrnicmp _strnicmp (first 10 characters only)\n" );
result = _strnicmp( string1, string2, 10 );
if( result > 0 )
strcpy( tmp, "greater than" );
else if( result < 0 )
strcpy( tmp, "less than" );
else
strcpy( tmp, "equal to" );
printf( "Result:\t\tString 1 is %s string 2\n\n", tmp );
}
Top
4 楼constantine(飘遥的安吉儿)回复于 2004-09-02 13:32:16 得分 2
#include <string>
using namespace std;
strncmp();
参数估计跟你那个差不多,Top
5 楼constantine(飘遥的安吉儿)回复于 2004-09-02 13:33:56 得分 0
好像strncmp是不用头文件的,你自己试一下看看Top
6 楼sunliwen780502(孙立文)回复于 2004-09-02 13:38:32 得分 5
#include <StrUtils.hpp>
#include <string>
int bcmp(const char *s1, const char *s2, int n)
{
AnsiString str, str2;
str = LeftStr(s1, n);
str2 = LeftStr(s2, n);
while ((*str == *str2) && (*str2 != 0))
{
str++;
str2++;
}
return *str - *str2;
}Top
7 楼weill(每天提一问,一天学一点)回复于 2004-09-02 13:41:18 得分 2
没有这种函数,BCB中。
Top
8 楼ahui2k(小刘飞叉)回复于 2004-09-02 14:08:38 得分 0
谢谢各位,我用的笨方法,用substring取出那部分,然后strcmp!!!!!Top
9 楼jiangchun_xn(GrayMemory)(再回头·灯火依旧·人不见·潸然泪下)回复于 2004-09-02 14:29:48 得分 2
why not use memcmp()?
Top
10 楼lidawen(Darwin)回复于 2004-09-02 15:01:20 得分 2
strncmp()Top




