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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
#1

Реализация функции srcat. - C++

23.01.2011, 21:13. Просмотров 1809. Ответов 5
Метки нет (Все метки)

Я написал (реализовал) функцию strcat.
Вот ...
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
/// РЕАЛИЗАЦИЯ ФУНКЦИИ strcat
 
    char s[]="Hello";
    char a[]="World!";
    int k=0;
    int l=0;
    int w;
    k=sizeof(s);
    l=sizeof(a);
    w=k+l;
    s[w];
    for (int i=0,r=0;i<w,r<k;i++,r++)
    
    {
        
        s[i]=s[r];
        if (s[r]==0)
        {
            s[i]=' ';
            i++;
            for (int d=0;d<l;d++)
            {   
                s[i]=a[d];
                if (s[i]==0)
                    break;
                else
                    i++;
            }
 
        }
    }   
    for (int i=0;i<w;i++)
    {cout <<s[i];}
return 0;
}
Но при запуске все выводит как надо, но потом возникает какая-то ошибка.
Сама компиляция идет.
Что в коде не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2011, 21:13     Реализация функции srcat.
Посмотрите здесь:

Реализация функции c++ - C++
Программа: #include &lt;iostream&gt; using namespace std; struct Node { int data; Node* next; };

Реализация функции принтф - C++
Хелпуем товарищи, треба написать свою фукнцию принтф с форматной строкой(правда она слегка иная, чтобы не путать с уже существующей) ...

Реализация функции палиндрома - C++
Я написала функцию, функция нормально работает. Но так как я смотрела по примерам, мне не очень нравиться этот момент: for (t = str;...

реализация ThreadSafe функции - C++
Пишу статическую библиотеку функций, на основе которой разрабатывают приложения. При создании многопоточных приложений на её основе...

Реализация функции strtok - C++
Добрый день. Мое задание звучит так: изучите поведение функции strtok из стандартной библиотеки. Реализуйте и...

Реализация функции erase() - C++
Как работает erase()? То есть, если у нас : prev, it, next - итераторы и выполняя erase(it), она очистит память, которую занимала it и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
archinko
14 / 14 / 2
Регистрация: 02.03.2010
Сообщений: 29
23.01.2011, 22:51     Реализация функции srcat. #2
Вот прототип функции strcat: char* strcat(char* dest; char* src). Нужно делать функцию на указателях, а здесь используються чаровые-масивы или const char*. На этом куске кода:
C++
1
2
3
4
5
6
7
8
  for (int d=0;d<l;d++)
                        {       
                                s[i]=a[d];
                                if (s[i]==0)
                                        break;
                                else
                                        i++;
                        }
масив s[] уже вышел за свои пределы(его размер 6), и все что этот кусок кода пытаеться ему присвоить улетает в далекие дали. Нужно создать отдельный указатель на char, выделить для него столько памяти, что бы хватило на оба слова + 1 символ конца строки. Ну и инициализирвоать его этими словами + не забыть поставить в конце '\0'.
schdub
23.01.2011, 22:57
  #3

Не по теме:

Цитата Сообщение от KOPC1886 Посмотреть сообщение
C
1
s[w];
А какую смысловую нагрузку несет 19-я строка?

archinko
14 / 14 / 2
Регистрация: 02.03.2010
Сообщений: 29
23.01.2011, 23:04     Реализация функции srcat. #4
Это ,наверное, была попытка выделить память для обоих строк
schdub
2945 / 1289 / 238
Регистрация: 19.01.2009
Сообщений: 3,368
Завершенные тесты: 1
23.01.2011, 23:07     Реализация функции srcat. #5
Каноническая реализация strcat, что-то типа:
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
/*
  * Copyright (c) 1988, 1993
  *      The Regents of the University of California.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  * 1. Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  * 3. All advertising materials mentioning features or use of this software
  *    must display the following acknowledgement:
  *      This product includes software developed by the University of
  *      California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/libkern/strcat.c,v 1.8 2003/02/10 00:36:27 hsu Exp $
  * $DragonFly: src/sys/libkern/strcat.c,v 1.5 2004/05/05 00:17:44 hsu Exp $
  */
 
char * strcat (char * s, const char * append)
{
    char *save = s;
    for (; *s; ++s);
    while ((*s++ = *append++) != 0);
    return(save);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2011, 17:48     Реализация функции srcat.
Еще ссылки по теме:

Реализация friend функции - C++
Есть код. Нужно реализовать вывод ответа через friend. Подскажите пожалуйста как это сделать? Ничего не получается... #include &lt;iostream&gt;...

Реализация функции itoa - C++
помогите написать реализацию функции itoa MyItoa(int,char*,int) и пожалуйста с комменториями

Реализация своей функции getline - C++
Здравствуйте! Не могу решить задачку. Постановка: Реализуйте функцию getline, которая считывает поток ввода посимвольно, пока не...

Реализация дружественной (friend) функции - C++
Всем доброго времени суток. Хотел бы попросить помощи, ибо запутался. Задачи состоит в том, чтобы произвести сравнение объекта...

Реализация функции копирования строки - C++
Здравствуйте! Пытаюсь реализовать метод копирования строк, но где-то кривая логика. Замыленным глазом уже ничего не вижу. Подскажите где...

Собственная реализация функции конкатенации - C++
Вопрос в комментарии к коду. Объясните пожалуйста (см. ниже что именно) #include &lt;stdio.h&gt; void strсat(char *s1, char *s2) { ...


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

Или воспользуйтесь поиском по форуму:
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
25.01.2011, 17:48  [ТС]     Реализация функции srcat. #6
Эмммм.... а как тогда правильно?
Yandex
Объявления
25.01.2011, 17:48     Реализация функции srcat.
Ответ Создать тему
Опции темы

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