好的,所以我的教授给我一个任务。这里是:
编写一个名为 strchr406 的函数。它传递了 2 个参数:一个字符串和一个 char 下面是函数的原型: char *strchr406(char str[], char ch); 该函数应返回指向 str 中第一个 ch 实例的指针。例如:
char s[ ] = "abcbc";
strchr406(s, 'b'); // returns s + 1 (i.e., a pointer to the first 'b' in s)
strchr406(s, 'c'); // returns s + 2
strchr406(s, 'd'); // returns 0
他要求我们使用指针编写我们自己的 strchr 版本。我在网上查找资源,但没有一个符合他要求我们做的事情。我正在与一群其他学生一起工作,我们谁也无法弄清楚这一点。
我们如何返回“s + 1”?
到目前为止,我有这个:(如果这更容易,我也把它放在网上:https ://repl.it/FVK8 )
#include <stdio.h>
#include "string_problems.h"
int main() {
char s[ ] = "abcbc";
strchr406(s, 'b'); // returns s + 1 (i.e., a pointer to the first 'b' in s)
strchr406(s, 'c'); // returns s + 2
strchr406(s, 'd'); // returns 0
printf("this should return %s\n", strchr406(s, 'c'));
return 0;
}
char *strchr406(char str[], char ch) {
char *p = str;
int index = 0;
while (*str != ch) {
++str;
++index;
}
if (*str == ch) {
return p + index;
} else {
return 0;
}
}
我得到奇怪的输出。任何帮助表示赞赏。