В настоящее время я занимаюсь разработкой небольшой программы, для которой требуется функция, которая возвращает строку (массив символов), и два параметра (фраза, с).«Фраза» - это строковый ввод, а «с» - символ, который будет удален из фразы.Остатки также будут удалены.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//This method has two parameters: (str, c)
//It will remove all occurences of var 'c'
//inside of 'str'
char * rmchr(char * str, char *c) {
//Declare result array
char *strVal = (char *) malloc(sizeof(char) * strlen(str));
//Iterate through each character
for (int i = 0; i < strlen(str); i++) {
*(strVal+i) = str[i];
//Check if char matches 'c'
if (strVal[i] != *c){
//Assign filtered value to new array
*(strVal+i) = str[i];
printf("%c", strVal[i]);
}
}
return strVal;
}
int main()
{
char * result = rmchr("This is a great message to test with! It includes a lot of examples!","i");
return 1;
}
Внутри функции 'rmchr' (оператор if) массив выводит именно то, что я хотел бы вернуть:
Ths s a great message to test wth! It ncludes a lot of examples!
Проблема в том, что мойвозвращаемая переменная, strVal не изменяется вне оператора if.Как я могу навсегда изменить массив, чтобы мой идеальный вывод был возвращен внутри «результата» (внутри основного).