Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: strcpy - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

strcpy Оценка: -----

#1
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Раскрыть информацию
strcpy()

strcpy(dest, source);

Функция strcpy() используется для копирования содержимого source в dest.
Поддерживает упакованные строки.

Реализация через strins:

stock strcpy(dest[], const source[], pos = 0, maxlength = sizeof dest)
    return strins((dest[0] = EOS, dest), source, pos, maxlength);

  • Возможен сбой

Реализация через strcat:

stock strcpy(dest[], const source[], maxlength = sizeof dest)
    return strcat((dest[0] = EOS, dest), source, maxlength);


Пример:

main()
{
    new
    	str1[6] = "Hello",
    	str2[6];
    strcpy(str2, str1);
    printf("%s", str2);
}

Выведет: Hello



strncpy()

strncpy(dest, source, count);

Функция strncpy() используется для копирования до count символов содержимого строки, на которую указывает source, в строку, на которую указывает dest.
Поддерживает упакованные строки.

stock strncpy(dest[], const source[], count, pos = 0, maxlength = sizeof dest)
    return strmid((dest[0] = EOS, dest), source, pos, count, maxlength);

Пример:

main()
{
    new
    	str1[6] = "Hello",
    	str2[6];
    strncpy(str2, str1, 3);
    printf("%s", str2);
}

Выведет: Hel

Автор: m1n1vv

Сообщение отредактировал m1n1vv: 31 Декабрь 2016 - 03:40

1

#2
Пользователь офлайн   VVWVV 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Нужно было отметить, что реализация через функцию strins может дать сбой, ибо она не использует значение maxlength. Так же стоит сказать, что она может работать с упакованными строками.
0

#3
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияVVWVV (30 Декабрь 2016 - 14:17) писал:

Нужно было отметить, что реализация через функцию strins может дать сбой, ибо она не использует значение maxlength. Так же стоит сказать, что она может работать с упакованными строками.

Добавлю
0

#4
Пользователь офлайн   VVWVV 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияm1n1vv (30 Декабрь 2016 - 14:20) писал:

Добавлю


Ошибка в названии функции, в примере:
main()
{
    new
        str1[6] = "Hello",
        str2[6];
    strcpy(str2, str1, 3); // strncpy
    printf("%s", str2);
}

Сообщение отредактировал VVWVV: 30 Декабрь 2016 - 14:21

0

#5
Пользователь офлайн   Nexius 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Реализация функции через strcat была ещё в 2012, насчёт strins не знаю точно. Стоит указать авторство над конкретными функциями (как я понимаю, только над последней)
1

#6
Пользователь офлайн   Jeckson! 

  • Вставить ник
  • Раскрыть информацию
мож strcat и всё на этом?
0

#7
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияJeckson! (11 Январь 2017 - 08:22) писал:

мож strcat и всё на этом?

В strncpy последний параметр должен быть обязательным
0

#8
Пользователь офлайн   Jeckson! 

  • Вставить ник
  • Раскрыть информацию
мож тогда fix___strcat(...), а не strcpy?
0

#9
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияJeckson! (18 Январь 2017 - 05:24) писал:

мож тогда fix___strcat(...), а не strcpy?

Это предлагаешь название или пример функции?
Названия функций с Си цивильней выглядят.
0

#10
Пользователь офлайн   VVWVV 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияJeckson! (18 Январь 2017 - 05:24) писал:

мож тогда fix___strcat(...), а не strcpy?


Функции strcat (присоединяет к строке) и strcpy(удаляет содержимое и вставляет новую строку) делают совсем разные вещи.

Вы хотите несовместимости?

Сообщение отредактировал VVWVV: 19 Январь 2017 - 06:34

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей