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

В середину одной строки вставить другую - C++

Восстановить пароль Регистрация
 
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
14.07.2012, 20:58     В середину одной строки вставить другую #1
Здравствуйте! Задача такая: В середину одной строки вставить другую. Не использовать библиотеки С. Вот мой код, но он вылетает, когда я начинаю записывать данные в строку. Помогите пожалуйста!

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
 
void c_ount(char *str1, int c1)
{
  c1=0;
  while(*str1)
    {
        str1++;
        c1++;
    }
}
 
void counts (char *str1, char *str2, char *str3, int c1)
{
    int c2=0;
    str3=0;
 
    int divs=c1/2;
 
    while(*str1)
    {
        if(c2==divs)
        {
            while(*str2)
            {
                *str3=*str2;
                str2++;
            }
        }
        *str3=*str1;
        *str1++;
        *str3++;
        c2++;
        cout<<str3;
    }
 
}
 
int _tmain(void)
{
    clrscr();
 
    unsigned char *str1="Hellow";
    unsigned char *str2="tt";
    unsigned char *str3;
    int c1;
 
    c_ount(str1, c1);
    counts (str1, str2, str3, c1);
 
    getch();
    return 0;
}
Среда разработки: C++ Builder 6.0
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 21:17     В середину одной строки вставить другую #2
Вы в строковые литералы собрались что-то вставлять?
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
14.07.2012, 22:03  [ТС]     В середину одной строки вставить другую #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы в строковые литералы собрались что-то вставлять?
Даю Записывать str2 в середину str1 посимвольно. Просто весьрезультат я записываю в str3- те str3-это строка str1, в середине которой записана строка str2
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
14.07.2012, 22:16     В середину одной строки вставить другую #4
Цитата Сообщение от algoritm256 Посмотреть сообщение
C++
1
2
3
int c1;
c_ount(str1, c1);
counts (str1, str2, str3, c1);
Тут переменная c1 вроде неизвестное содержит. Если ей что-нибудь присвоить, может будет работать программа.

Добавлено через 1 минуту
Цитата Сообщение от algoritm256 Посмотреть сообщение
str3=0;
str3 это указатель на char. Так можно делать?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 22:22     В середину одной строки вставить другую #5
Цитата Сообщение от algoritm256 Посмотреть сообщение
Даю Записывать str2 в середину str1 посимвольно. Просто весьрезультат я записываю в str3- те str3-это строка str1, в середине которой записана строка str2
В строковые литералы ничего записать не получится. Строку нужно представить как массив char с символом '\0' в конце. Вот рабочий код
код
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
#include <iostream>
using namespace std;
#include <conio.h>
 
char* counts (char *str1, char *str2, char *str3)
{
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    int c = len1/2;
    int d = len1 - c;
    
    for (int i = 0; i < c; i++)
    {
        str3[i] = str1[i];
    }
    
    for (int i = c, j = 0; j < len2; i++, j++)
    {
        str3[i] = str2[j];
    }
    
    for (int i = c + len2, j = c; j < len1; i++, j++)
    {
        str3[i] = str1[j];
    }
    
    return str3;
 }
 
int main(void)
{
    char str1[]="Hellow";
    char str2[]="tt";
    char str3[255]="\0";
   
    cout << counts(str1, str2, str3) << endl;
 
    getch();
    return 0;
}


Добавлено через 1 минуту
Intel~lect, у него код вообще неправильный.
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
14.07.2012, 22:23  [ТС]     В середину одной строки вставить другую #6
Цитата Сообщение от Intel~lect Посмотреть сообщение
Тут переменная c1 вроде неизвестное содержит. Если ей что-нибудь присвоить, может будет работать программа.
Присваивал. Никакого эффекта


Цитата Сообщение от Intel~lect Посмотреть сообщение
str3 это указатель на char. Так можно делать?
По идеи можно
Yandex
Объявления
14.07.2012, 22:23     В середину одной строки вставить другую
Ответ Создать тему
Опции темы

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