所以这是一个问题:编写函数strend(s,t),如果char t出现在字符串s的末尾,则返回1,否则返回0。

这是我的代码:

int strend(char*, char);
int main()
{

    int n = -1;
    char str1[6] = "Hello", char1;
    printf("Enter a character: ");
    char1 = getchar();
    n = strend(str1, char1);
    printf("n = %d", n);
    return 0;

}

int strend(char* str1, char str2)
{
    while(*str1 != '\0')
    {
        str1++;
    }

    if(*str1 == str2)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}


但是,字符匹配不能按预期执行。哪里出错了?
谢谢。

最佳答案

您正在将字符与\0字符串终止符进行比较。

int strend(char* str1, char str2)
{
    if (*str1 == '\0') {
        return 0;
    }

    while(*str1 != '\0') /* removed ; that shouldn't be there */
    {
        str1++;
    }
    /* at this point, str1 is pointing to the 0-terminator */

    str1--; /* pointer now points to last character of the string, not 0-terminator */

    if(*str1 == str2)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

09-25 18:14
查看更多