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

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

Войти
Регистрация
Восстановить пароль
 
 
Nick Deny
2 / 2 / 0
Регистрация: 17.11.2012
Сообщений: 43
#1

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

04.03.2014, 14:12. Просмотров 1042. Ответов 24
Метки нет (Все метки)

Написал вот такое, но в программе все равно текст не выводит.
Должно работать точно также, как и обычная библиотека 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4390 / 3233 / 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
6851 / 4062 / 927
Регистрация: 30.01.2014
Сообщений: 6,859
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
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
Еще ссылки по теме:

считывание строки( библиотека string) C++
Библиотека Обработки строк string.h C++
C++ функция strcat
Своя функция strcat. Копирует мусор C++
C++ Библиотека String

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

Или воспользуйтесь поиском по форуму:
DrOffset
6851 / 4062 / 927
Регистрация: 30.01.2014
Сообщений: 6,859
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
Ответ Создать тему
Опции темы

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