Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
1

Конкатенация строк: В конец исходной строки дописывается мусор

08.07.2009, 22:13. Просмотров 924. Ответов 5
Метки нет (Все метки)

доброго времени суток.надо написать функцию которая делает конкатенацию строк.
функцию написал,но в конец исходной строки дописывается мусор, подскажите как можно этот мусор убрать??если бы это был численный массив можно было бы обнулить
а тут..?
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
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define M 15
void conc(char *,char *);
int main() {
    char s1[M],s2[M];
    puts("Vvedi 1 stroku");
    fgets(s1,(M-1),stdin);
    puts("Vvedi 2 stroky");
    fgets(s2,(M-1),stdin);
    conc(s1,s2);
    getch();
    return(0);
}
void conc(char *s1,char *s2) {
 char s3[M*2];
 char *s11,*s22,*s33;
 s11=s1;
 s22=s2;
 s33=&s3[0];
   while(*s11) {
   if(*s11=='\n')break;
     *s33=*s11;
     s11++;
     s33++;
    }
    while(*s22) {
    if(*s22=='\n')break;
        *s33=*s22;
        s33++;
        s22++;
    }
    puts("koncateniruem stroki");
    fputs(s3,stdout);
}
результаты работы проги
Vvedi 1 stroku
kocc
Vvedi 2 stroky
cmocc
koncateniruem stroki
kocccmocc*↕;%
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2009, 22:13
Ответы с готовыми решениями:

Первую подходящую цифру исходной строки добавить в конец же строки
помогите пожалуйста со вторым методом!!! Объект 1: поле - строка; методы: является ли первая...

Присоединение исходной строки в конец строки получателя
Напишите процедуру Str_concat, которая присоединяет исходную строку в конец строки- получателя. Для...

Конкатенация всех файлов *.txt в одной папке, вставляя перенос строки в конец каждого файла
Всем доброго времени суток! Пример: у меня в папке есть n-ное к-во файлов с расширением *.txt Моя...

C Builder 10. Функция t_str() меняет конец исходной строки.
Всем доброго времени суток! Решил перевести свой старый проект, написанный в 5-ом билдере, в...

5
576 / 570 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
08.07.2009, 22:19 2
Ну а завершающий нуль-символ кто будет дописывать в конец результирующей строки?
0
Заблокирован
09.07.2009, 16:51 3
Вот что у меня вышло
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
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define M 15
 
char * conc(char *,char *);
 
void main() 
{
    char s1[M],s2[M];
    printf("Vvedi 1 stroku\r\n");
    scanf("%s",s1);
    printf("Vvedi 2 stroky\r\n");
    scanf("%s",s2);
    printf("koncateniruem stroki\r\n");
    char * str = conc(s1,s2);
    printf("%s\r\n",str);
    getch();
}
 
char * conc(char *s1, char *s2) 
{
    int sLen1 = strlen(s1);
    int sLen2 = strlen(s2);
    char *s3 = new char[(strlen(s1)+strlen(s2))];
    while(*s1) 
    {
        if(*s1=='\n' || *s1 == '\0')
            break;
         *s3=*s1;
         *s1++;
         *s3++;
    }
    s1-=sLen1;
    while(*s2) 
    {
        if(*s2=='\n' || *s2 == '\0')
            break;
        *s3=*s2;
        *s2++;
        *s3++;
                
    }
    s2-=sLen2;
    s3-=(sLen1+sLen2);
    return s3;
}
0
Миниатюры
Конкатенация строк: В конец исходной строки дописывается мусор  
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
09.07.2009, 21:36  [ТС] 4
спасибо за участие,исправил так
....
C
1
2
3
4
5
6
7
8
9
while(*s22) {
    if(*s22=='\n')
    break;
        *s33=*s22;
        s33++;
        s22++;
    }
    *s33='\0';//дописал нуль-символ
...........
0
576 / 570 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
09.07.2009, 21:41 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вобще конкатенация строк делается немного иначе.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#define N 30
 
void concat(char *s, char *t)
{
    while(*s)
        s++;
    while(*s++ = *t++)
        ;
}
 
int main()
{
    char s[N] = "Hello, ";
    char t[N] = "world";
 
    concat(s, t);
    printf("%s\n", s);
    return 0;
}
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
09.07.2009, 22:42 6
а как же стандартная функция char*strcat (char*_dest, const char*_src); ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2009, 22:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Массив строк. Конец строки и конец массива
\n - перевод на новую строку \0 - конец строки Если у меня массив строк (текст), чем...

Конкатенация строк: Зачем строки создаются в динамической памяти?
Есть программа, которая делает конкатенацию строк. #include &lt;iostream&gt; using namespace std;...

Функции потока: Если строки хранят числа, то выводится сумма, иначе – конкатенация строк
Л.Р.2 Вариант №5 ------------ Разработать программу, осуществляющую ввод двух строк,...

Если обе строки хранят целые числа, то выводится сумма чисел, в противном случае – конкатенация строк
Т.к я в этом деле вообще новичок, прошу знающих людей пожалуйста помочь мне... Л.Р.1 Вариант №5...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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