Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

strcat i naprimer iscntrl

1.8K
26 октября 2006 года
Kama
153 / / 04.05.2006
Privet vsem...
Hotelos bi uznat vnutrennie kod dvuh funcsiy chtob imet predstavlenie...
to est.. kak pishutsya oni...

int iscntrl(int ch);
Kak ya ponyal zdes ch igraet rol adresa kotorie nahodyatsya v deapozone 0x1F i 0x7F.

i

char *strcat(char *str1, const char *str2);
92
26 октября 2006 года
Тень Пса
2.2K / / 19.10.2006
a 4to help u nas bol'we ne piwut??? ili le4we skazat' ne 4itayut?

(i po-russki toge uge len' stalo pe4atat', da? :) )

[quote=C++Builder Help]
char *strcat(char *dest, const char *src);

Описание

Добавляет одну строку к другой.

strcat добавляет копию src в конец dest. Длина результата будет равна strlen(dest) + strlen(src).
[/quote]

используется эта функция так:
Код:
#include <string.h>

//...
char * dest = "Hello, ";
char * src = "world!";

char * result = "";

result = strcat(dest, src);

// result будет содержать Hello, world!


PS: если я где-то ошибся или что-то не учёл, поправьте меня :)
3
26 октября 2006 года
Green
4.8K / / 20.01.2000
dest должен располагать достаточным местом для результирующей строки.
dest должен указывать на область памяти, а не на строковый литерал.
Поэтому твой пример дважды не верен.

А вот result может и не инициализироваться до strcat, т.к. он в любом случае после этой операции примет значение dest.

Совет: если инициализируешь указатель строковым литералом, делай указатель на константное значение:
const char* dest = "Hello, ";
const char* src = "world!";
Т.о. отловишь множество run-time багов ещё на стадии компиляции.
1.9K
27 октября 2006 года
Anton Chik
175 / / 26.09.2005
по ходу дела Kama знает как эти функции работают, но ради интереса хочет взглянуть на код их реализации...
92
27 октября 2006 года
Тень Пса
2.2K / / 19.10.2006
Green, спасибо ) поправил )
14K
28 октября 2006 года
viva
27 / / 07.04.2006
[QUOTE=Тень Пса]Green, спасибо ) поправил )[/QUOTE]
Поправил, но неправильно!
Сохраняя стиль, можно, например, так:
Код:
#include <string.h>

//...
char dest[100] = "Hello, ";
char * src = "world!";

char * result;

result = strcat(dest, src);

// result будет содержать Hello, world!

При этом следует помнить, что не result содержит результат, а буфер dest. А result всего лишь указатель на этот буфер!
1.8K
28 октября 2006 года
Kama
153 / / 04.05.2006
Spasibo,, no vi menya ne ponyali..
Ya hotel bi znat vnutrenniy kod funksii...
Kak ona pisalas...
Kto znaet , pomogite...
14K
30 октября 2006 года
viva
27 / / 07.04.2006
[QUOTE=Kama]Spasibo,, no vi menya ne ponyali..
Ya hotel bi znat vnutrenniy kod funksii...
Kak ona pisalas...
Kto znaet , pomogite...[/QUOTE]
Напиши вышеприведённый текст программы, установи breakpoint на оператор с strcat, запусти в среде с отладчиком. Когда выполнение программы дойдёт до этой строки, жми дальше Ctrl+Alt+C и двигайся по F7. Код очень прост.
309
30 октября 2006 года
el scorpio
1.1K / / 19.09.2006
На чём пишем? На Builder'е ;)
Значит, использовать AnsiString и не мучить себя и других глупыми вопросами :)
Что это такое - читать здесь: http://www.codenet.ru/progr/bcb/AnsiString-Set.php
3.0K
30 октября 2006 года
Мerlin
267 / / 25.07.2006
Что-то типа
 
Код:
char *strcat(char *dst, char *src)
{
  char *ch = dst;
  while(*ch++);
  while(*ch++=*src++);
  return dst;
}
1.8K
30 октября 2006 года
Kama
153 / / 04.05.2006
Ne vse ved takie umnie kak ti a "el scorpio-cпециалист"?
Dlya menya eto ne glupiy vopros i mnogie iz pro ne smogut takue "fignu" napisat....
240
30 октября 2006 года
aks
2.5K / / 14.07.2006
Блин может хыватит пользоваться транслитом? Если ты настолько не уважаешь собеседников, что даже лень восспользоваться переводчиком в кирилицу, то почему думаешь тебе будут помагать?
3.0K
30 октября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=Kama]Ne vse ved takie umnie kak ti a "el scorpio-cпециалист"?
Dlya menya eto ne glupiy vopros i mnogie iz pro ne smogut takue "fignu" napisat....[/QUOTE]
Есть Google Code Search: http://www.google.com/codesearch
С ее помощью можно найти реализации. Например strcat на linux
Код:
char * strcat(char * dest, const char * src)
{
    char *tmp = dest;

    while (*dest)
        dest++;
    while ((*dest++ = *src++) != '\0')
        ;

    return tmp;
}
strcat для Visual C находится в Visual Studio\Crt\Src\strcat.c :
Код:
char * __cdecl strcat (
        char * dst,
        const char * src
        )
{
        char * cp = dst;

        while( *cp )
                cp++;                   /* find end of dst */

        while( *cp++ = *src++ ) ;       /* Copy src to end of dst */

        return( dst );                  /* return dst */

}
Если не считать const char * s и return( dst ); то код такой же как и мой.
1.8K
01 ноября 2006 года
Kama
153 / / 04.05.2006
Спасибо Мерлин!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог