繁体   English   中英

不知道为什么我的 function 不断返回错误?

[英]Not sure why my function keeps returning an error?

编写返回字符最后一次出现的 function。 它返回一个指向最后一个匹配字符的指针,如果没有找到匹配,则返回 null。

#include <stdio.h>
#include <unistd.h>
#include <string.h>

char* my_strrchr(char* a, char b) {

    if(a == NULL) {
        return NULL;
    }

    char i;
    i=0;
    while(a[i] != '\0') {
        a[i] = b;
        i = i + 1;
    }
    return a;

}

int main(void) {
    char a[] = "abc";
    char b = 'c';

    printf("%s\n", my_strrchr("abc", b));

    return 0;
}

编写返回字符最后一次出现的 function。 它返回一个指向最后一个匹配字符的指针,如果没有找到匹配,则返回 null。

但这不是您的 function my_strrchr所做的。 function 将b中的值分配给\0之前的每个字符(假设a需要指向一个字符串),然后返回一个指向数组的第一个元素的指针a指向,而不管提供的字符最后一次出现在哪里字符串中的b是:

while(a[i] != '\0') {
    a[i] = b;
    i = i + 1;
}

return a;

您的需要更像是这样的:

#include <stdio.h>
#include <string.h>

char* my_strrchr(char* a, char b) {

    if(a == NULL) {
        return NULL;
    }

    size_t len = strlen(a);

    for(size_t i = len; i > 0; i--)
    {
        if(a[i-1] == b)
        {
            return &a[i-1];
        } 
    }

    return NULL;
}

int main(void) {
    char a[] = "abc";
    char b = 'c';

    printf("%s\n", my_strrchr("abc", b));

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM