R
Rendall
написал функцию, делающую что нужно, но не тем способом :Разработайте программу, функция main() которой содержит вызов предложенной стандартной функции обработки строк (по вариантам) и вызов пользовательской функции, которая имитирует действия, соответствующие выбранной стандартной функции. Обращение к элементам строки в пользовательской функции необходимо реализовать через указатели.
Тип возвращаемого функцией значения, типы аргументов должны совпадать с соответствующими параметрами стандартной функции.
C++:
#include "stdafx.h"
#include <string.h>
#include <iostream>
#include <clocale>
#include <malloc.h>
using namespace std;
char* my_strdup(const char*str);
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(0,"Rus");
const int MAX_STR_SIZE=257;
char *str= new char[MAX_STR_SIZE];
cout<<"Введите строку \n";
fflush(stdin);
fgets(str,MAX_STR_SIZE-1, stdin);
cout<<"\n";
char *standart_func=_strdup(str);
cout<<"Строка, скопированная с помощью функции strdup :"<<standart_func<<endl;
cout<<"Строка, скопированная с помощью функции, имитирующей strdup :";
my_strdup(str);
system("pause");
return 0;
}
char* my_strdup(const char *str)
{
int i=0;
int STR_SIZE=strlen(str);
char* copy_of_str=(char*)malloc(STR_SIZE*sizeof(char));
for(int j=0;j<STR_SIZE;j++)
{
copy_of_str[j]=str[i];
i++;
}
copy_of_str[STR_SIZE]='\0';
for(int j=0;copy_of_str[j]!='\0';j++)
cout<<copy_of_str[j];
return(copy_of_str);
}