Интересная задачка на C.

Блог им. Nemo
Есть задачка. Вместо точек нужно написать свои дание. В другом месте редактировать код нельзя. После запуска программы мы должны получить результат RES: Hello
код:

...

...my_copyStr(...)
{
 ...
}


int main(int argc, char *arcv[ ])
{
 char *zsStrHello = "Hello";
 char *zsResStr =0;

 my_copyStr(...);
 printf("RES: %s",zsResStr);
 
 free(zsResStr);
 
return 0;
}


пытался решить, сделал так:

#include <string.h>
my_copyStr(char **str1, char **str2)
{
 str1 = (malloc((strlen(str2)+1) * sizeof(char));
 strncpy(str1,str2,strlen(str1));
}


int main(int argc, char *arcv[ ])
{
 char *zsStrHello = "Hello";
 char *zsResStr =0;

  my_copyStr(zsResStr,zsStrHello);
 printf("RES: %s",zsResStr);
 
 free(zsResStr);
 
return 0;
}
не работает, результат NULL.

Может кто подскажет как решить?)

6 комментариев

avatar
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void my_copyStr(char **str1, char **str2)
{
  *str1 = (char *)malloc((strlen(*str2) + 1) * sizeof(char));
  strcpy(*str1, *str2);
}

int main(int argc, char *arcv[ ])
{
  char *zsStrHello = "Hello";
  char *zsResStr = 0;

  my_copyStr(&zsResStr,&zsStrHello);
  printf("RES: %s",zsResStr);

  free(zsResStr);

  return 0;
}
avatar
Огромное спасибо!!!
avatar
Домашнее задание? :)
avatar
почти))
avatar
Может кто подскажет, где подобные задачки можно найти? Желательно с ответами, я бы потренился.
avatar
Тут много тестов по С: www.quizful.net/test
, и если решите неправильно — будет показан правильной результат.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.