Программа вызывает исключние и не работает
Начинаю изучать Си. Задача состоит в том, чтобы подсчитать в строке 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);
}