Witam. Mam problem z programem. Nie działa jak należy. Na wyniku podaje 'diction', czyli traci ogon z 1. członu. Na tę chwilę nie wiem, co jest nie tak. Jakieś porady? (Program ma też działać dla większej niż 2 wywołań funkcji) Dziękuję z góry :)
#include <stdio.h>
#include <stdlib.h>
char *insert(char *string, int place, const char *napis){
static int check = 1;
char *tmp;
int i = 0, j, k1, k2;
if(check == 1){
while(napis[i]){
i++;} //zlicza dl. napisu
string = malloc(i * sizeof(*string));
for(j = 0;j < i;j++){
string[j] = napis[j];} //przypisuje napis do naszej zmiennej
check++; //raport wykonania funkcji
return string;
}else{
i = 0;
k2 = place;
while(napis[i]){
i++;} //zliczenie dl NOWEGO napisu
tmp = malloc(i * sizeof(char));
while(string[j]){
tmp[j] = string[j]; //zapamietanie starego napisu
j++;}
string = realloc(string, 2 * i * sizeof(*string));
for(j = 0;j < i;j++){
string[place] = napis[j];//dopisanie nowego napisu
place++;}
k1 = i + place + 1;
while(tmp[k2]){
string[k1] = tmp[k2]; //dopisanie straconego ogona do napisu
k1++;
k2++;}
return string;
}
}
int main(){
char *string = calloc(1, 1);
string = insert(string, 0, "diary");
string = insert(string, 2, "ction");
printf("%s\n", string);
free(string);
return 0;
}