比较c后空格后的最后一个字符串

时间:2015-03-13 15:00:13

标签: c string

我需要比较最后一个空格字符后面的2个字符串。 例如:

str1 = "tran tuan hien"
str2 = "doan tuan"

我需要一个函数,当我调用函数(str1,str2)时返回-1; (就像strcmp(“hien”,“tuan”)返回-1)。 c或c ++有没有这样的功能?

1 个答案:

答案 0 :(得分:1)

这是一个演示程序,显示如何用C

编写函数
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int cmp_last_word( const char s1[], const char s2[] )
{
    const char *p1 = s1 + strlen( s1 );

    while ( p1 != s1 && isblank( *( p1 - 1 ) ) ) --p1;

    const char *q1 = p1;

    while ( q1 != s1 && !isblank( *( q1 -1 ) ) ) --q1;

    const char *p2 = s2 + strlen( s2 );

    while ( p2 != s2 && isblank( *( p2 - 1 ) ) ) --p2;

    const char *q2 = p2;

    while ( q2 != s2 && !isblank( *( q2 -1 ) ) ) --q2;

    while ( q1 != p1 && q2 != p2 && *q1 == *q2 ) ++q1, ++q2;

    if ( q1 == p1 && q2 == p2 ) return 0;
    else if ( q1 == p1 && q2 != p2 ) return -1;
    else if ( q1 != p1 && q2 == p2 ) return 1;
    else return ( *q1 < *q2 ) ? -1 : 1;
}

int main(void) 
{
    char str1[] = "tran tuan hien   ";
    char str2[] = "doan tuan \t";

    printf( "%d\n", cmp_last_word( str1, str2 ) );

    strcpy( str2, "doan hien \t" );
    printf( "%d\n", cmp_last_word( str1, str2 ) );

    return 0;
}

程序输出

-1
0