Dołączanie wyrazu do innego wyrazu

Dołączanie wyrazu do innego wyrazu
Martyna Michalska
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
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?

Kopiuj
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;
DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1135
1

Użyj debuggera i zobacz co się dzieje

OG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 71
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.
Martyna Michalska
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
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.
Kopiuj
#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;

}
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
3

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

Kopiuj
char* napis = malloc(...);

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.