У меня есть задача сделать небольшую программу с указателями, и перед нами стоит проблема с const char*s
. Программа предназначена для подсчета количества раз, когда подстрока отображается в основной строке. Кроме того, различные позиции, где начинаются подстроки, должны быть сохранены в char ** ptr. Это мой маленький код тестирования:Подсчет подстрок в строке
#include <stdio.h>
#include <string.h>
main()
{
int i=-1;
int k=0;
char** ptr;
char* str="cucumber";
char* substr="cu";
while(strstr(str, substr)!=NULL)
{
i++;
ptr[i]=strstr(str, substr);
str = strpbrk(str, substr)+1;
k++;
}
printf("%i",k);
}
Он должен печатать 2, так как подстрока «у.е.» появляется 2 раза в «огурец» - все же, мой компилятор говорит мне, что я использую символы, когда я используйте постоянные. Кроме того, я не знаю, как это сделать.
Функция strstr() требует их. Что я должен изменить?
выполнения этой программы (если он будет компилировать) приведет к неопределенному поведению, так как установка PTR [х] будет пытаться записать в массив PTR, однако , ptr объявляется как один указатель, а не как массив. – user3629249
Чувак, которого вы пишете в нераспределенной памяти. Вы не выделили память для char ** ptr; – siu
Домашнее задание снова! – siu