Существует проблема с вашим кодом, строка str = "Hi how R U today?";
не будет копировать строку в массив символов, который вы динамически выделяете, вместо этого она будет указывать на const char*
(копия только для чтения).
Поэтому из-за этого, когда вы пытаетесь изменить содержимое str
с помощью функции toggleChars()
, возникает ошибка сегментации.
Вы можете редактировать свой код следующим образом:
#include <stdio.h>
int toggleChars (char* string, char* letters){
int count = 0;
char* scurrent = string;
while(*scurrent != '\0'){
char* lcurrent = letters;
while(*lcurrent != '\0'){
if(*scurrent == *lcurrent){
*scurrent = '0';
count += 1;
}
lcurrent += 1;
}
scurrent += 1;
}
return count;
}
int main(){
char str[] = "Hi how R U today?";
char letters[] = "HhiR";
int x = toggleChars(str, letters);
printf("str: %s\ncount: %d", str, x);
return 0;
}
Вместо этого, если вы хотите использовать динамическое выделение памяти, вы можете использовать функцию strcpy()
из стандартной библиотеки. https://www.geeksforgeeks.org/strcpy-in-c-cpp/
Спасибо, надеюсь, это поможет,
-Rajkumar