Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
SSSR
0 / 0 / 0
Регистрация: 28.05.2016
#1

Строки в с++. После строки выводятся не понятные символы - C++

10.01.2013, 20:48. Просмотров 463. Ответов 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
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
char*  copystring(char *is, int n, int k); 
 
int main()
{
    char L[10];
    cout<<"Vvedite stroky:";
    gets(L);
    puts(L);
    cout<<"rezultat="<<copystring(L,4,3)<<endl;
       getch();
}
char*  copystring(char *is,  int n, int k) 
{
    int i=0;
    char *ks=new char[k];
              do
               { ks[i]=is[n-1+i];
                 i++; }
while(i<k);
return ks; 
}
0
Миниатюры
Строки в с++. После строки выводятся не понятные символы  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 20:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки в с++. После строки выводятся не понятные символы (C++):

Почему повторяющиеся символы заданной строки не выводятся на консоль? (алгоритм std::adjacent_find) - C++
Никак не могу взять в толк, почему повторяющиеся символы не выводятся на консоль? #include &lt;iostream&gt; #include &lt;string&gt; #include...

Сформировать строку S таким образом, чтобы в нее попеременно вошли четные символы строки S1 и нечетные символы строки S2. - C++
Вот задание: Даны строки S1 и S2. Сформировать строку S таким образом, чтобы в нее попеременно вошли четные символы строки S1 и...

Вместо чисел массива выводятся не понятные длиннющие числа - C++
Вот код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std;

Выводятся непонятные символы после символов прочитанных из файла - C++
Написал программу чтобы на собственном опыте понять как С++ читает файлы #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; ...

Откуда берутся все символы после моей строки? - C++
Народ, кому не трудно ,обоснуйте природу выводимого при выполнении программы #include &lt;cstdlib&gt; #include &lt;iostream&gt; using...

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

3
zener
22 / 9 / 1
Регистрация: 16.10.2010
Сообщений: 115
10.01.2013, 20:52 #2
Цитата Сообщение от SSSR Посмотреть сообщение
char *ks=new char[k];
Ты выделяешь память под k символов, а вывести на экран хочешь меньшее количество символов, в итоге, у тебя первые 3 символа получают значение, а остальные как хранили "мусор", так и продолжают хранить.
Выделяй столько памяти, сколько тебе нужно. Либо делай вывод на экран от начального символа до конечного.
1
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
10.01.2013, 21:02 #3
C++
1
2
3
4
5
6
7
8
9
10
11
char*  copystring(char *is,  int n, int k) 
{
    int i=0;
    char *ks=new char[k+1];//Выделяем место достаточное для символов строки + завершающий символ
              do
               { ks[i]=is[n-1+i];
                 i++; }
while(i<k);
ks[k]=0;//Конец строки
return ks; 
}
C++
1
cout<<"rezultat="<<copystring(L,4,3)<<endl;//Тут утечка памяти - указатель, который вернет функция нигде не сохраняется и память так и будет "висеть" занятой
1
SSSR
0 / 0 / 0
Регистрация: 28.05.2016
10.01.2013, 21:07 #4
большое спасибо! теперь всё понятно.
0
10.01.2013, 21:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2013, 21:07
Привет! Вот еще темы с ответами:

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A - C++
&quot;Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и...

Вычислить длину введенной строки и вывести символы строки с четными индексами - C++
Напишите программу, которая требует ввода строки с клавиатуры. Программа вычисляет длину строки и выводит на экран только те символы...

Определить длину строки,удалить из строки все символы, которые равны заданному - C++
Доброго времени суток уважаемые форумчане. Помогите пожалуйста с написанием кода для данной задачи в вижуале. Если будет возможно,то с...

Отсортировать цифры, символы и буквы из строки в отдельные строки - C++
1. Дана строка содержащая цифры, символы и буквы. Отсортировать их в отдельные строки. 2. 3. 4.Правила


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

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

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