编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch,通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

void ooo(char* a, char* b, int* j, int *c)
{
    int l = 0;
    int i;
    for (i = 0; i < 30; i++)
    {
        if ((*b) == (*(a + i)))
        {
            *c = ( * c) + 1;
            j[l] = i;
            l++;
        }
    }
}

int main()
{
    int i = 0;
    int c = 0;
    int j[30] = { 0 };
    char a[30];
    char b;
    gets(a);
    scanf("%c", &b);
    ooo(a, &b, j ,&c);
    if (c == 0)
        printf("NULL");
    else
    {
        for (i = 0;i<c; i++)
        {
            printf("%d ", j[i]);
        }
    }

    return 0;
}


运行结果及报错内容

在学校的动态测试上一直报错

我的解答思路和尝试过的方法

请问一下我这个代码有问题吗

我想要达到的结果

修改如下

 
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
 
void ooo(char* a, char b, int* j, int *c)
{
    int l = 0;
    int i;
    for (i = 0; i < 30; i++)
    {
        if ( b == (*(a + i)))
        {
            *c = ( * c) + 1;
            j[l] = i;
            l++;
        }
    }
}
 
int main()
{
    int i = 0;
    int c = 0;
    int j[30] = { 0 };
    char a[30];
    char b;
    gets(a);
    scanf("%c", &b);
    ooo(a, b, j ,&c);
    if (c == 0)
        printf("NULL");
    else
    {
        for (i = 0;i<c; i++)
        {
            printf("%d ", j[i]);
        }
    }
    return 0;
}
 
 

应该是gets的原因,可以用f_gets()代替
有帮助望采纳,谢谢!