Программа вызывает исключние и не работает

Начинаю изучать Си. Задача состоит в том, чтобы подсчитать в строке S колличество вхождений подстроки s1.

Была создана программа:

#include <stdio.h>
#include <string.h>

void main()
{
    char string[100];
    scanf_s("%s", &string);
    char *substring[100];
    scanf_s("%s", &substring);
    int c = 0;
    char* p = strstr(string, substring);
    while (p)
    {
        c++;
        p = strstr(string, substring);
    }
    printf("%d", p);
}

Но введении строки string, появляется исключение: Вызвано исключение по адресу 0x63B1EF8C (ucrtbased.dll) в Lab.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x01311000.

Не могу понять, в чём ошибка, заранее спасибо за помощь.


Ответы (1 шт):

Автор решения: Mikhailo
void main()
{
    #define  SIZE  200
    char string[SIZE];
    gets_s(string, SIZE);
    char substring[SIZE];
    gets_s(substring, SIZE);
    int c = 0;
    for(char* p = strstr(string, substring);
        p; p = strstr(p+1, substring)) ++c;
    printf("%d", c);
}
→ Ссылка