В вашем коде есть ряд проблем. Основная проблема заключается в том, что вы не назначаете возвращаемое значение от malloc
до newstring
. Кроме того, вам нужно malloc
дополнительный байт для завершения строки.
Кроме того, ваш цикл должен копировать символы из str
в newstring
.
В main
необходимо присвоить возвращаемое значение из функции переменной указателя символа, чтобы получить новую строку.
Что-то вроде:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* cutString(char* str, char del){
char *newstring = malloc(strlen(str) + 1); // malloc into newstring
int i= 0;
while (newstring[i]!='\0' && str[i] != del) // Stop when a) no more chars in str or b) "del" is found
{
newstring[i] = str[i]; // Copy character from str to newstring
++i;
}
newstring[i]='\0'; // Terminate the string
return newstring;
}
int main(){
char* newstring = cutString("Hello World",'o'); // Save the returned value
printf("%s\", newstring);
free(newstring);
return 0;
}