Илья Кригоузов Привет, меня зовут Илья Кригоузов и я занимаюсь информационными технологиями с 2005 года. Под такими технологиями я понимаю довольно широкий круг вещей: сайты любой сложности, базы данных и клиент-серверные приложения.
Закончил МИРЭА по специальности «инженер-математик», практику проходил на концерне радиостроения ОАО «Вега».Работаю в Информационных системах для бизнеса, так же сотрудничал с АйТи-агенством.
В свободное время увлекаюсь фотографией. Найти меня вы можете:

16 декабря 2007 г.

С++ аналог функции strcpy

Вот собственно полностью готовый аналог функции strcpy, поддерживает даже параметр "количество символов для копирования", проверяет его валидность. Так же оптимизирована рекурсия и нет пустых вызовов функций. Радуйтесь наздоровье :)

#include <iostream>
#include <stream.h>
#include <stdio.h>
#include <strings.h>
char start[20];
int k; //бу-бу) йа камент )
int n =0; //счетчег сцуко хитрый ^_^
int obrez=0; //покудова копируем строчко

void show_array(char array[], int numb) {
printf("\noutput >> ");
for (int i=0; i<numb; i++) cout<<array[i];
printf(" <<output\n");
}

void copy(char array[], char ready[], int numb, int obrezko) {

if (obrez!=0 or obrez!=k) {numb=obrezko; k=obrezko; }
if(n != numb) {
ready[n] = array[n];
n++;
copy(array,ready,numb,obrezko);
}
}

char enter() {
printf("enter string (20 symbols max): ");
scanf("%s", start);
printf("\nenter number of symbols, would you like to copy or print '0', if you want to copy string till the end : ");
cin>>obrez;
}

int check_size(char for_check[]) {
k = strlen(for_check);
return k;
}

int main() {enter();{
check_size(start);
show_array(start,k);// пишем массивко исходный в консолько
if (obrez>k) {printf("you try copy more, then you have, sorry :(\n"); return 0;}
else {
char finish[k];
copy(start,finish,k,obrez);
show_array(finish,k);// пишем копированный массив в консолько
}
}


2 комментария: