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

Библиотека string.h, функция strcat - C++

Восстановить пароль Регистрация
 
 
Nick Deny
 Аватар для Nick Deny
2 / 2 / 0
Регистрация: 17.11.2012
Сообщений: 43
04.03.2014, 14:12     Библиотека string.h, функция strcat #1
Написал вот такое, но в программе все равно текст не выводит.
Должно работать точно также, как и обычная библиотека strcat.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char * strcat ( char * destination, const char * source )
{
    int size1= sizeof((char*)destination)/sizeof((char*)destination[0]);
    int size2= sizeof((char*)source)/sizeof((char*)source[0]);
    size2=size1+size2;
    int c=0;
    for(int i=size1;i<size2;i++)
    {
        ((char*)destination)[i]=((char*)source)[c];
        c++;
    }
    return ((char*)destination);
}
Где сея ошибка? :\
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 14:12     Библиотека string.h, функция strcat
Посмотрите здесь:

C++ Функция strcat
C++ функция strcpy и strcat
C++ Строки библиотека string.h
своя функция strcat, заверешение с ошибкой C++
C++ Собственная функция strcat -сцепление строк
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
04.03.2014, 16:08     Библиотека string.h, функция strcat #21
Nick Deny, сделайте вместо
C++
1
2
while ((*dest++ = *src++) != '\0')
        continue;
так:
C++
1
while (num-- && (*dest++ = *src++));
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6418 / 3792 / 876
Регистрация: 30.01.2014
Сообщений: 6,579
04.03.2014, 16:09     Библиотека string.h, функция strcat #22
Цитата Сообщение от Nick Deny Посмотреть сообщение
Не выдает ничего
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char * strncat(char * dest, const char *src, size_t count)
{
    char * r = dest;
 
    while(*dest != 0)
        ++dest;
 
    char c;
    while((count-- > 0) && ((c = *src++) != 0))
        *dest++ = c;
 
    *dest++ = 0;
 
    return r;
}
Tulosba
04.03.2014, 16:13
  #23

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
Ага, а потом появляются идиомы наподобие этой.
С++11 это уже не требует реализовать. Есть явные преобразования типов.
Цитата Сообщение от DrOffset Посмотреть сообщение
Нет смысла вводить правило, когда исключений больше.
Исключения это что? Пользовательские типы? Конечно их будет больше, чем фундаментальных.
Цитата Сообщение от DrOffset Посмотреть сообщение
Но ты первое свое утверждение привел в общем случае
Mea culpa. Имел ввиду встроенные типы.

Nick Deny
 Аватар для Nick Deny
2 / 2 / 0
Регистрация: 17.11.2012
Сообщений: 43
04.03.2014, 16:24  [ТС]     Библиотека string.h, функция strcat #24
И последнее. Выдает, что буква 's' найдена в каждом символе.
Код:
C++
1
2
3
4
5
6
7
8
9
10
    cout<<"\n\n= = = = =\nStart!\n\nstrchr:"<<endl;
  char str[] = "This is a sample string";
  char * pch;
  printf ("Looking for the 's' character in \"%s\"...\n",str);
  pch=strchr(str,'s');
  while (pch!=NULL)
  {
    printf ("found at %d\n",pch-str+1);
    pch=strchr(pch+1,'s');
  }
Функция:
C++
1
2
3
4
5
6
7
8
9
10
11
char * strchr (char * str, int character )
{
    char * r=str;
    for(int i=0;i<strlen(str);i++)
    {
        if(str[i]==character)
            return r;
        else
            continue;
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2014, 16:33     Библиотека string.h, функция strcat
Еще ссылки по теме:

Что делает функция strcat(t, f) C++
C++ функция strcat
Своя функция strcat. Копирует мусор C++

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

Или воспользуйтесь поиском по форуму:
DrOffset
6418 / 3792 / 876
Регистрация: 30.01.2014
Сообщений: 6,579
04.03.2014, 16:33     Библиотека string.h, функция strcat #25

Не по теме:

Tulosba, я просто не вижу смысла в этой краткости, если есть хоть 1%, что из-за нее где-то выстрелит в ногу. Я слишком много проектов перевидел и сидел на поддержке, чтобы так просто этим разбрасываться. Так же самая история с ++i вместо i++ в цикле, для встроенных типов не играет роли. Но зачем всякий раз думать о том, что встроенный тип - это одно, а в случае итератора, может быть оверхед?

В случае встроенных типов на уровне кодогенерации почти всегда будет полный эквивалент. Скатываться в perl-подобный синтаксис из-за каких-то религиозных мотивов?

С++11 это уже не требует реализовать.
Я согласен. Но я еще не видел ни одного программного продукта (именно продукта), который бы не имел обратную совместимость С++03. И это текущих условиях пока что является оправданным.



Добавлено через 6 минут
Цитата Сообщение от Nick Deny Посмотреть сообщение
И последнее
C++
1
2
3
4
5
6
7
8
9
10
11
12
char * strchr(char * sp, int c)
{
    do
    {
        if(*sp == static_cast<char>(c))
        {
            return sp;
        }
    }
    while(*sp++ != 0);
    return 0;
}
Yandex
Объявления
04.03.2014, 16:33     Библиотека string.h, функция strcat
Ответ Создать тему
Опции темы

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