👤

Proszę o pomoc w napisaniu programu z C++. PLISSS :(
Będę bardzo wdzięczna za okazaną pomoc. Odwdzięczę się punktami i ,,naj,, za poprawne rozwiązanie.

TREŚĆ ZADANIA:
Wykorzystując notację wskaźnikową napisać funkcje:
strcat() - łącząca dwa napisy przyjmowane jako argumenty w jeden.


Odpowiedź :

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#define STRLEN 100

#define ERR(source) (perror(source),\

                    fprintf(stderr,"%s:%d\n",__FILE__,__LINE__),\

                    exit(EXIT_FAILURE))

void usage(char *name)

{

   fprintf(stderr, "USAGE: %s\n", name);

   exit(EXIT_FAILURE);

}

char * mystrcat(char* s1, const char* s2)

{

   int i = 0, j = 0;

   while(*(s1+i) != '\0') ++i;

   while(*(s2+j) != '\0')

   {

       *(s1+i+j) = *(s2+j);

       ++j;

   }

   *(s1+i+j) = '\0';

   return s1;

}

int main(int argc, char **argv)

{

   char* s1;

   int i = 0;

   if (argc != 3)

       usage(argv[0]);

   if (NULL == (s1 = (char*) malloc((strlen(argv[1])+strlen(argv[2]))*sizeof(char)))) ERR("malloc");

   while(*(argv[1]+i) != '\0')

   {

       *(s1+i) = *(argv[1]+i);

       ++i;

   }  

   

   *(s1+i)='\0';

   

   printf("%s\n", mystrcat(s1, argv[2]));

   free(s1);

   return EXIT_SUCCESS;

}