定义函数,查找字符串中的字符


#include 

char *match(char *s, char ch); /* 函数声明 */
int main(void ) {
    char ch, str[80], *p = NULL;
    scanf("%s", str);
    ch = getchar();
    if ((p = match(str, ch)) != NULL)
        printf("%s\n", p);
    else
        printf("Not Found\n");
    return 0;
}

char *match(char *s, char ch) {
    int i, n = 0;
    for (i = 0; i < 80; i++) {
        if (ch == *(s + i))
            return (s + i);
        n++;
    }
    if (n == 80)
        return NULL;
}

输出结果一直是"Not Found",而且我刚输入完字符串的时候按回车就直接得结果,不能把ch字符输入;为什么呢
  • scanf 输入 字符数组后, 如果你换行,那这个换行 会被下面的 getchar() 接收了
  • scanf 之后 再加个 getchar() 接收一下换行,修改如下:

img

修改如下,供参考:

#include <stdio.h>
char* match(char* s, char ch); /* 函数声明 */
int main(void) {
    char ch, str[80], * p = NULL;
    scanf("%s", str);
    scanf(" %c", &ch); //ch = getchar(); 修改
    if ((p = match(str, ch)) != NULL)
        printf("%c\n", *p); //printf("%s\n", p); 修改
    else
        printf("Not Found\n");
    return 0;
}

char* match(char* s, char ch) {
    int i, n = 0;
    for (i = 0; *(s + i); i++) { //for (i = 0; i < 80; i++) 修改
        if (ch == *(s + i))
            return (s + i);
        //n++;    修改
    }
        //if (n == 80)修改
    return NULL;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^