1 / 5
Oct 2015

Witam, mam problem z napisaniem własnej funkcji strcat z biblioteki string.h, z dynamiczną alokacją pamięci. Rozumiem swój błąd nadpisuję zaalokowaną pamięć, próbowałem wielu sposobów, parę jest w komentarzach, ale cały czas robię to samo, proszę o pomoc.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *polacz(char *n1,const char *n2)
{
  int i,j;
  char *nap1=(char*)malloc((strlen(n1)+strlen(n2)+1)*sizeof(char));
  for(i=0; nap1[i] != '\0'; i++);
  for(j=0; n2[j] != '\0'; j++)
    nap1[i+j]=n2[j];
  nap1[i+j]='\0';
  return nap1;
}

int main()
{
  char *n1="ala ma", *n2=" kota";
  //char *nap1, *nap2;
  //nap1=(char*)malloc((strlen(n1)+strlen(n2))*sizeof(char));
  //nap2=(char*)malloc(strlen(n2)*sizeof(char));
 // nap1=polacz(nap1,n2);
  puts(polacz(n1,n2));
//  free(nap1);
 // free(nap2);
return 0;
}
  • created

    Oct '15
  • last reply

    Nov '15
  • 4

    replies

  • 775

    views

  • 3

    users

  • 1

    like

char *polacz (const char *n1, const char *n2) //jeżeli n2 const to czemu nie n1?
.........

for(i = j = 0; nap1[i] != '\0'; i++) ///////**;** <- tu miałeś pustą pętlę
  nap1[j++] = n1[i];
for(i = 0; nap2[i] != '\0'; i++)
  nap1[j++] = n2[i];

 nap1[j] = '\0'; ///TU j jest ok

..................

1 month later

(char* ) przed malloc to w c++. W C to można olać ciepłym siusiaczem.

Nie dość, że totalne głupoty [w c++ jest new], to jeszcze zahacza o toaletę: "WC to można olać ciepłym siusiaczem", fuj. Czy czasami nie powinno się powyższej wypowiedzi skasować?

Suggested Topics

Topic Category Replies Views Activity
System SPOJ 1 196 Jan 30
System SPOJ 2 136 Apr 15

Want to read more? Browse other topics in System SPOJ or view latest topics.