C:评估部分字符串

时间:2010-04-07 19:33:56

标签: c string substring

我无法找到一个表达式来评估字符串的一部分。

我希望得到类似的东西:

if (string[4:8]=='abc') {...}

我开始这样写:

if (string[4]=='a' && string[5]=='b' && string[6]=='c') {...}

但如果我需要评估像

这样的大部分字符串
if (string[10:40] == another_string) {...}

然后它会写出太多的表达式。有没有现成的解决方案?

3 个答案:

答案 0 :(得分:6)

您可以随时使用strncmp(),因此string[4:8] == "abc"(当然不是C语法)可能会成为strncmp(string + 4, "abc", 5) == 0

答案 1 :(得分:2)

您需要的标准C库函数是strncmpstrcmp比较两个C字符串 - 正如通常的模式一样,“n”版本处理有限长度的数据项。

if(0==strncmp(string1+4, "abc", 4))
    /* this bit will execute if string1 
       ends with "abc" (incluing the implied null)
       after the first four chars */

答案 2 :(得分:0)

其他人发布的strncmp解决方案可能是最好的。如果你不想使用strncmp,或者只是想知道如何实现自己的strncmp,你可以这样写:

int ok = 1;
for ( int i = start; i <= stop; ++i )
    if ( string[i] != searchedStr[i - start] )
    {
        ok = 0;
        break;
    }

if ( ok ) { } // found it
else      { } // didn't find it