簡體   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