2011年1月9日 星期日

String (2)


Return the 1st non-repeated character: Ex."aaaaaaak47" return 'k'
char find_first_nonrepeat(char *str)  
{
    char *c1 = str;
    char pre_c = *c1;
 
    while (*c1 != '\0' && *c1 == pre_c)
    {       
        pre_c = *c1; // If the same as previous char,
        c1++;        // add c1 by 1 and go to next char
    }

    if (*c1 == '\0') // Be careful the special case!
        return 0;    // => all chars are the same
    else
        return *c1; // This is to return a char, not pointer                     
}

Convert an Integer to a String
char* num2str(int num, char *str)
{
    char *c, *c2;
    for (c = str; num; num/=10, c++)
        *c = num % 10 + '0';
    *c = '\0';
    c2 = c - 1;
    c = str;        // After that we need to reverse the string,
                    // since string c starts from lower digit.
    while (c < c2) {// It is a different way to reverse a string
        *c ^= *c2;    
        *c2 ^= *c;
        *c++ ^= *c2--;
    }
    return str;
}

Compare 2 strings. If equal return 1, else return 0
int Same(char *s1, char *s2)
{
    char *c1, *c2;
    c1 = s1;
    c2 = s2;
    while (*c1 != '\0' && *c2 != '\0' && *c1 == *c2) {
        c1++;
        c2++;
    }
    if (*c1 == '\0' && *c2 == '\0')
        return 1;  // If while loop goes to the end => equal
    else
        return 0;
}

沒有留言:

張貼留言