[英]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.