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

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

Восстановить пароль Регистрация
 
SSSR
Сообщений: n/a
10.01.2013, 20:48     Строки в с++. После строки выводятся не понятные символы #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
#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; 
}
Миниатюры
Строки в с++. После строки выводятся не понятные символы  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 20:48     Строки в с++. После строки выводятся не понятные символы
Посмотрите здесь:

C++ Отсортировать цифры, символы и буквы из строки в отдельные строки
Откуда берутся все символы после моей строки? C++
C++ Сформировать строку S таким образом, чтобы в нее попеременно вошли четные символы строки S1 и нечетные символы строки S2.
C++ Определить длину строки,удалить из строки все символы, которые равны заданному
C++ Функция перезаписывает символы строки заданным количеством символов другой строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zener
22 / 9 / 1
Регистрация: 16.10.2010
Сообщений: 115
10.01.2013, 20:52     Строки в с++. После строки выводятся не понятные символы #2
Цитата Сообщение от SSSR Посмотреть сообщение
char *ks=new char[k];
Ты выделяешь память под k символов, а вывести на экран хочешь меньшее количество символов, в итоге, у тебя первые 3 символа получают значение, а остальные как хранили "мусор", так и продолжают хранить.
Выделяй столько памяти, сколько тебе нужно. Либо делай вывод на экран от начального символа до конечного.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 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;//Тут утечка памяти - указатель, который вернет функция нигде не сохраняется и память так и будет "висеть" занятой
SSSR
Сообщений: n/a
10.01.2013, 21:07     Строки в с++. После строки выводятся не понятные символы #4
большое спасибо! теперь всё понятно.
Yandex
Объявления
10.01.2013, 21:07     Строки в с++. После строки выводятся не понятные символы
Ответ Создать тему
Опции темы

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