Dołączanie wyrazu do innego wyrazu

0

Zadanie: napisz funkcję dołączającą napis2 do napis1 i zwracającą wskaźnik do napis1 przy użyciu realloca.
No i niestety w poniższym przypadku realloc zwraca wartość null. Co poszło nie tak?

char * dolacz(char* napis1, char* napis2)  //dolacza napis2 do napis1 i zwraca wskaznik do powiekszonego napisu1
{
    int size1=0;
    size1=strlen(napis1);
    int size2=0;
    size2=strlen(napis2);

    int size=size1+size2+1;
    
    napis1 =(char*)realloc(napis1,size*sizeof(char)); 

    int j=0;
    int i=size1;
    while(napis2[j])
    {
        napis1[i]=napis2[j];
        i++;
        j++;
    }
    napis1[i]=0;

    return napis1;
1

Użyj debuggera i zobacz co się dzieje

3
  1. Żeby użyć realloc pamięć musi być wcześniej alokowana za pomocą malloc, calloc lub realloc.
  2. Nie pokazałaś jak używasz tej funkcji więc nie widzimy co zostało podane jako argumenty.
0
Oggy napisał(a):
  1. Żeby użyć realloc pamięć musi być wcześniej alokowana za pomocą malloc, calloc lub realloc.
  2. Nie pokazałaś jak używasz tej funkcji więc nie widzimy co zostało podane jako argumenty.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 36



int main()
{
    char napis2[MAX];
    char napis[MAX];

    printf("Podaj napis:");
    scanf("%s", &napis);
    printf("Podaj napis2:");
    scanf("%s", &napis2);


    printf("dolaczone napisy: %s", dolacz(napis,napis2));
    return 0;

}
3

Tak jak napisał @Oggy - realloc działa do pary z malloc:

char* napis = malloc(...);

Btw, sizeof(char) z definicji jest zawsze równe 1 oraz nie musisz jawnie wykonywać rzutowania (tj. (char*) jest zbędne).

1 użytkowników online, w tym zalogowanych: 0, gości: 1