Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 138, средняя оценка - 4.62
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
#1

Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. - C++

06.06.2009, 17:18. Просмотров 17777. Ответов 29
Метки нет (Все метки)

Напишите свои аналоги функций strlen(),strcpy(),strcmp() и сравните с библиотечными.
Наивно написал эти функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int strlen(char* c_str)
{
    int count=0;
    while(*c_str++) ++count;
    return count;
}
 
/************************************************/
 
void strcpy(char* c_str1,char* c_str2)
{
    while(*c_str2++=*c_str1++);
}
 
/************************************************/
 
int strcmp(char* c_str1,char* c_str2)
{
    if (strlen(c_str1)!=strlen(c_str2)) return 0;
    int count=strlen(c_str1)+1;
    while(*c_str1++==*c_str2++) --count;
    if (count) return 0;
    return 1;
}
Смотрю в библиотеке и вижу это(в файле string.h):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
/* Copy SRC to DEST.  */
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     __THROW __nonnull ((1, 2));
 
/************************************************/
 
extern int strcmp (__const char *__s1, __const char *__s2)
     __THROW __attribute_pure__ __nonnull ((1, 2));
 
/************************************************/
 
extern size_t strlen (__const char *__s)
     __THROW __attribute_pure__ __nonnull ((1));
Где сами алгоритмы функций?Что-то я запутался в этих файлах и не нашёл.Кто-нибудь может скопипастить/направить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2009, 17:18     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными.
Посмотрите здесь:

Есть в языке "С" аналоги функций Pos() и Delete()? C++
напишите в С++ программу-калькулятор арифметических функций C++
C++ Напишите программы для вычисления значений математических функций
Аналоги функций ord() и chr() C++
Не применяя библиотечных функций, напишите код функции C++
C++ Написать собственные аналоги функций strlen, strcmp, strchr, strcpy, strcat (дописать и исправить ошибки)
C++ STRCMP
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
06.06.2009, 17:28     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #2
самих функций вы не увидите... в заголовочный файлах описаны лишь прототипы...
сами функции хранятся в библиотеках
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
06.06.2009, 17:49  [ТС]     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #3
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
самих функций вы не увидите... в заголовочный файлах описаны лишь прототипы...
сами функции хранятся в библиотеках
я и спрашиваю,где конкретно в библиотеках
Evg
Эксперт CАвтор FAQ
17391 / 5629 / 352
Регистрация: 30.03.2009
Сообщений: 15,415
Записей в блоге: 26
06.06.2009, 18:10     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #4
Цитата Сообщение от #pragma Посмотреть сообщение
я и спрашиваю,где конкретно в библиотеках
Нигде. У тебя они только в бинарном виде: т.е. в комплекте с компилятором у тебя идут бинарники и инклюды к ним. Разработчики исходники библиотек не поставляют

Добавлено через 1 минуту 19 секунд
Вот одна из реализаций strlen'а: http://www.openbsd.org/cgi-bin/cvswe...e=text%2Fplain
Она быстрее, чем твоя, потому как в цикле идёт только одна инкрементация, а у тебя две

Добавлено через 4 минуты 18 секунд
Вот ещё одна реализация, оптимизированная в первую очередь под длинные строки
http://tsunanet.net/~tsuna/strlen.c.html
Работа идёт long'ами (т.е. почти вся строка проматывается кусками размером с long (для 32-битных систем по 4 байта, для 64-битных - по 8). Ещё одна причина, почему этот код работает быстро - из-за того, что обращения в память по слову на некоторых арихитектурах работают лучше, чем обращения по байту из-за особенностей реализации кэша

Добавлено через 3 минуты 14 секунд
Кстати, по документации strcpy возвращает dst, а не void, как у тебя
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
06.06.2009, 18:11  [ТС]     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #5
Только сейчас дошло,что вся библиотека имеет закрытый код...Это правда так?? Очень печально.Насчёт инкремента спасибо,постараюсь запомнить.Правда этот вариант с char вроде потом переделали,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/lib/libc/string/strlen.c,v 1.6 2009/01/25 23:08:47 delphij Exp $");
 
#include <sys/limits.h>
#include <sys/types.h>
#include <string.h>
 
/*
 * Portable strlen() for 32-bit and 64-bit systems.
 *
 * Rationale: it is generally much more efficient to do word length
 * operations and avoid branches on modern computer systems, as
 * compared to byte-length operations with a lot of branches.
 *
 * The expression:
 *
 *  ((x - 0x01....01) & ~x & 0x80....80)
 *
 * would evaluate to a non-zero value iff any of the bytes in the
 * original word is zero.  However, we can further reduce ~1/3 of
 * time if we consider that strlen() usually operate on 7-bit ASCII
 * by employing the following expression, which allows false positive
 * when high bit of 1 and use the tail case to catch these case:
 *
 *  ((x - 0x01....01) & 0x80....80)
 *
 * This is more than 5.2 times as compared to the raw implementation
 * on Intel T7300 under EM64T mode for strings longer than word length.
 */
 
/* Magic numbers for the algorithm */
#if LONG_BIT == 32
static const unsigned long mask01 = 0x01010101;
static const unsigned long mask80 = 0x80808080;
#elif LONG_BIT == 64
static const unsigned long mask01 = 0x0101010101010101;
static const unsigned long mask80 = 0x8080808080808080;
#else
#error Unsupported word size
#endif
 
#define LONGPTR_MASK (sizeof(long) - 1)
 
/*
 * Helper macro to return string length if we caught the zero
 * byte.
 */
#define testbyte(x)             \
    do {                    \
        if (p[x] == '\0')       \
            return (p - str + x);   \
    } while (0)
 
size_t
strlen(const char *str)
{
    const char *p;
    const unsigned long *lp;
 
    /* Skip the first few bytes until we have an aligned p */
    for (p = str; (uintptr_t)p & LONGPTR_MASK; p++)
        if (*p == '\0')
        return (p - str);
 
    /* Scan the rest of the string using word sized operation */
    for (lp = (const unsigned long *)p; ; lp++)
        if ((*lp - mask01) & mask80) {
        p = (const char *)(lp);
        testbyte(0);
        testbyte(1);
        testbyte(2);
        testbyte(3);
#if (LONG_BIT >= 64)
        testbyte(4);
        testbyte(5);
        testbyte(6);
        testbyte(7);
#endif
        }
 
    /* NOTREACHED */
    return 0;
}
Evg
Эксперт CАвтор FAQ
17391 / 5629 / 352
Регистрация: 30.03.2009
Сообщений: 15,415
Записей в блоге: 26
06.06.2009, 18:12     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #6
Для strcpy что-то не нашёл ничего интересного, но там тоже могут быть какие-то замуты по поводу широкого копирования
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
06.06.2009, 18:13  [ТС]     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #7
А открытые библиотеки есть ?
Evg
Эксперт CАвтор FAQ
17391 / 5629 / 352
Регистрация: 30.03.2009
Сообщений: 15,415
Записей в блоге: 26
06.06.2009, 18:14     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #8
Цитата Сообщение от #pragma Посмотреть сообщение
Правда этот вариант с char вроде потом переделали
Возможно. В детали реализации я не вникал, но суть того, откуда возникла такая большая процедура и, главное, зачем - я так думаю, ты понял

Добавлено через 1 минуту 0 секунд
Цитата Сообщение от #pragma Посмотреть сообщение
А открытые библиотеки есть ?
Есть glibc
Только не зная, как они устроены, временами бывает, что без поллитры не разберёшь, что, где и как реализовано. Для intel'а там скорее всего на ассемблере эти вещи написаны
Somebody
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 1
07.06.2009, 12:06     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #9
Что-то тут strcmp не то возвращает
Evg
Эксперт CАвтор FAQ
17391 / 5629 / 352
Регистрация: 30.03.2009
Сообщений: 15,415
Записей в блоге: 26
07.06.2009, 12:27     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #10
Цитата Сообщение от Somebody Посмотреть сообщение
Что-то тут strcmp не то возвращает
Кстати да, возвращать должно 0, 1 или -1, т.е. результат сравнений "равно", "больше" или "меньше". А твой вариант умеет только "равно" и "не равно"
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
07.06.2009, 21:13  [ТС]     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #11
Да,я когда писал,подумал,что третьего не дано,или строки идентичны,или нет.
flexin777
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 5
10.04.2011, 15:23     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
int strlen(char*);
char* strcpy(char*,char*);
int strcmp(char* ,char* );
void main()
{
char *string="Hello!";
    int length=strlen(string);
    char *string_1="abcde";
    char *string_2="efgh";
    char string2_mas[40];
    strcpy(string2_mas,string_1);
    int compare=strcmp(string_1,string_2);
}
 
    int strlen(char* c_str)
{
    int count=0;
    while(*c_str++) ++count;
    return count;
}
 
 
 
char* strcpy(char* c_str1,char* c_str2)
{
    while(*c_str1++=*c_str2++);
    return c_str1;
}
 
 
 
int strcmp(char* c_str1,char* c_str2)
{
    if (strlen(c_str1)<strlen(c_str2)) return -1;
    if (strlen(c_str1)>strlen(c_str2)) return 1;
    if (strlen(c_str1)==strlen(c_str2))return 0;
}
По-моему,вот так будет правильнее
Evg
Эксперт CАвтор FAQ
17391 / 5629 / 352
Регистрация: 30.03.2009
Сообщений: 15,415
Записей в блоге: 26
10.04.2011, 15:28     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #13
flexin777, strcpy возвращает неправильное значение, а strcmp работает в принципе неправильно (такое ощущение, что ты даже не знаешь, что она делает)
flexin777
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 5
11.04.2011, 16:15     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #14
Не могли бы Вы исправить,как правильно должно быть?
Я только учусь и может допустил ошибку.
Evg,заранее спасибо за ответ!
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
11.04.2011, 17:04     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #15
flexin777, ты сначала разберись, что эти функции должны делать. Тогда решение станет очевидным. Прочитай где-нибудь описание этих функций, какие у них формальные параметры и возвращаемые значения.
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
11.04.2011, 18:50     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #16
Зачем тебе это надо, протестируй их с библиотечными на время исполнения в цикле увидишь на сколько твои функции не эфективны лучще используй всегда библиотечные они очень быстры так как написаны на Assembler профи-спецами, не веришь смотри в исходники Visual C++ от 2002 подсмотри Asm модули от INTEL. тоже самое про memcpy - быстрее аналога от Windows CopyMemory.
flexin777
0 / 0 / 0
Регистрация: 09.04.2011
Сообщений: 5
11.04.2011, 19:11     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #17
xAtom,я просто сам хотел написать свои реализации этих функций.Сейчас я решаю упражнения в книге Страуструпа.
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
11.04.2011, 19:47     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #18
Вот начиркал для демонстрации, одна функция реализованная на С++ другая на встроенном ASM.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// c++
int  _strcmp(const char* str1, const char*  str2) {
     while( *str1 == *str2 ) {
          *str1++;
          *str2++;
          if( *str1 == '\0' && *str2 == '\0' )
      return 0;
      }
      return   1;
}
 
// asm c++
int  strcmp_(const char*  str1, const char* str2) {
    int  res = 1;
    __asm {
       lea esi, str1
       lea edi, str2 
next:
       mov  al, byte ptr [esi]
       cmp  al, byte ptr [edi]
       jne   end;
                inc esi
       inc edi
       mov  al, byte ptr [esi]
       or  al, byte ptr [edi]
       jz   yes;
       jmp  next;
yes:
       mov  dword ptr res,  0           
end:
       };
       return  res;
}
 
 
// тестируем функцией winApi GetTickCount()
 
DWORD  begin = GetTickCount();
 
for(long i = 0L; i < 1000000; i++) {
   if(! strcmp("Hello World !!!", "Hello World !!!"))  // библотечная функция 1 - место 17-29 мск
       continue;
 /*  if(! strcmp_("Hello World !!!", "Hello World !!!")) //моя функц-asm c++ функция 2-место 37-45 мкс
      continue;
   if(! strcmp("Hello World !!!", "Hello World !!!"))  // моя функц-c++ 3 - место 120 - 157 мкс
       continue;*/
}
printf("elapsed = %d\n", GetTickCount() - begin);
Встроенный asm в с++ маленько не дотянул до модуля asm стандартной библиотеки, хотя по-алгоритму по asm можно писать ещё компактнее просто я давно уже в ASM не прогил, там уже встроенные функции аппаратно поддерживающие работы со строками cmps типа такого....

Добавлено через 5 минут
Цитата Сообщение от flexin777 Посмотреть сообщение
xAtom,я просто сам хотел написать свои реализации этих функций.Сейчас я решаю упражнения в книге Страуструпа.
Молодец flexin777, опыта наберёшся. Я тоже в своё время писал все стандартный библиотечные функции с/с++ strlen, strncmp, memcpy, memchr, memset и т.п, удачи...
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
11.04.2011, 23:05     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #19
Ради интереса в 2008 студии продебажил strcmp, strcpy, strlen. Код у мелкомягких написан на асме, но в комментариях пишут алгоритм. Вот что они предлагают:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int strlen (const char * str)
{
    int length = 0;
 
    while( *str++ )
        ++length;
 
    return( length );
}
 
char * strcpy (char * dst, char * src)
{
    char * cp = dst;
 
    while( *cp++ = *src++ )
            ;               /* Copy src over dst */
    return( dst );
}
 
int strcmp ( unsigned char * src , unsigned char * dst )
{
    int ret = 0 ;
 
    while( ! (ret = *src - *dst) && *dst)
            ++src, ++dst;
 
    if ( ret < 0 )
            ret = -1 ;
    else if ( ret > 0 )
            ret = 1 ;
 
    return( ret );
}
Форматирование сохранено

Добавлено через 5 минут
Правда код на асме у них вроде немного другой.. вот например strlen:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
        CODESEG
 
        public  strlen
 
strlen  proc \
        buf:ptr byte
 
        OPTION PROLOGUE:NONE, EPILOGUE:NONE
 
        .FPO    ( 0, 1, 0, 0, 0, 0 )
 
string  equ     [esp + 4]
 
        mov     ecx,string              ; ecx -> string
        test    ecx,3                   ; test if string is aligned on 32 bits
        je      short main_loop
 
str_misaligned:
        ; simple byte loop until string is aligned
        mov     al,byte ptr [ecx]
        add     ecx,1
        test    al,al
        je      short byte_3
        test    ecx,3
        jne     short str_misaligned
 
        add     eax,dword ptr 0         ; 5 byte nop to align label below
 
        align   16                      ; should be redundant
 
main_loop:
        mov     eax,dword ptr [ecx]     ; read 4 bytes
        mov     edx,7efefeffh
        add     edx,eax
        xor     eax,-1
        xor     eax,edx
        add     ecx,4
        test    eax,81010100h
        je      short main_loop
        ; found zero byte in the loop
        mov     eax,[ecx - 4]
        test    al,al                   ; is it byte 0
        je      short byte_0
        test    ah,ah                   ; is it byte 1
        je      short byte_1
        test    eax,00ff0000h           ; is it byte 2
        je      short byte_2
        test    eax,0ff000000h          ; is it byte 3
        je      short byte_3
        jmp     short main_loop         ; taken if bits 24-30 are clear and bit
                                        ; 31 is set
 
byte_3:
        lea     eax,[ecx - 1]
        mov     ecx,string
        sub     eax,ecx
        ret
byte_2:
        lea     eax,[ecx - 2]
        mov     ecx,string
        sub     eax,ecx
        ret
byte_1:
        lea     eax,[ecx - 3]
        mov     ecx,string
        sub     eax,ecx
        ret
byte_0:
        lea     eax,[ecx - 4]
        mov     ecx,string
        sub     eax,ecx
        ret
 
strlen  endp
 
        end
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2011, 16:50     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными.
Еще ссылки по теме:

Напишите варианты библиотечных функций strncpy, strncat и strncmp C++
C++ Написать программу: работа с си строками, функции strlen, strcpy
Как заменить функцию fgets на strlen и strcpy? C++
C++ Напишите алгоритм сортировки массива по возрастанию, без использования встроенных функций языка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Somebody
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 1
14.04.2011, 16:50     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. #20
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;**************************  strlen32.asm  **********************************
; Author:           Agner Fog
; Date created:     2008-07-06
; Last modified:    2008-07-06
; Syntax:           MASM/ML 6.x, 32 bit
; Operating system: Windows, Linux, BSD or Mac, 32-bit x86
; Instruction set:  80386
; Description:
; Standard strlen function:
; size_t strlen(const char *str);
; Finds the length of a zero-terminated string of bytes, optimized for speed.
; Uses 32-bit registers to check four bytes at a time, all memory reads aligned.
;
; Alternatives:
; In 64-bit systems or when SSE2 is available, use strlenSSE2.asm
; More versions are available in www.agner.org/optimize/asmlib.zip
;
; The latest version of this file is available at:
; www.agner.org/optimize/asmexamples.zip
; Copyright (c) 2008 GNU General Public License www.gnu.org/copyleft/gpl.html
;******************************************************************************
.386
.model flat
 
.code
 
_strlen PROC    NEAR
; extern "C" int strlen (const char * s);
; Works in all 32-bit systems 
; In Linux, remove the underscore from the function name.
 
        push    ebx
        mov     ecx, [esp+8]           ; get pointer to string
        mov     eax, ecx               ; copy pointer
        and     ecx, 3                 ; lower 2 bits of address, check alignment
        jz      L2                     ; string is aligned by 4. Go to loop
        and     eax, -4                ; align pointer by 4
        mov     ebx, [eax]             ; read from nearest preceding boundary
        shl     ecx, 3                 ; mul by 8 = displacement in bits
        mov     edx, -1
        shl     edx, cl                ; make byte mask
        not     edx                    ; mask = 0FFH for false bytes
        or      ebx, edx               ; mask out false bytes
 
        ; check first four bytes for zero
        lea     ecx, [ebx-01010101H]   ; subtract 1 from each byte
        not     ebx                    ; invert all bytes
        and     ecx, ebx               ; and these two
        and     ecx, 80808080H         ; test all sign bits
        jnz     L3                     ; zero-byte found
        
        ; Main loop, read 4 bytes aligned
L1:     add     eax, 4                 ; increment pointer by 4
L2:     mov     ebx, [eax]             ; read 4 bytes of string
        lea     ecx, [ebx-01010101H]   ; subtract 1 from each byte
        not     ebx                    ; invert all bytes
        and     ecx, ebx               ; and these two
        and     ecx, 80808080H         ; test all sign bits
        jz      L1                     ; no zero bytes, continue loop
        
L3:     bsf     ecx, ecx               ; find right-most 1-bit
        shr     ecx, 3                 ; divide by 8 = byte index
        sub     eax, [esp+8]           ; subtract start address
        add     eax, ecx               ; add index to byte
        pop     ebx
        ret
_strlen ENDP
 
END
Yandex
Объявления
14.04.2011, 16:50     Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными.
Ответ Создать тему
Опции темы

Текущее время: 05:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru