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

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

Войти
Регистрация
Восстановить пароль
 
SSSR
Сообщений: n/a
#1

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

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

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

Вместо чисел массива выводятся не понятные длиннющие числа - 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...

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

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

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

После ввода с клавиатуры произвольного строки выдать на экран протокол о количестве вхождений каждого символа. В протоколе символы расположить по алфа - C++
После ввода с клавиатуры произвольного строки выдать на экран протокол о количестве вхождений каждого символа. В протоколе символы...

Запись в файл структуры ,записывает не понятные символы - C++
Все создается записывается но при открытии не понятные символы Помогите пожалуйста #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Программа должна удалять из строки все символы, что стоят на чётных местах после буквы "а" - C++
Программа должна удалять из строки все символы, что стоят на чётных местах после буквы &quot;а&quot;. Сделал программу которая это делает, но только...

В динамической матрице целых чисел добавить строки после строки, содержащей простое число - 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
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 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;//Тут утечка памяти - указатель, который вернет функция нигде не сохраняется и память так и будет "висеть" занятой
SSSR
Сообщений: n/a
10.01.2013, 21:07     Строки в с++. После строки выводятся не понятные символы #4
большое спасибо! теперь всё понятно.
Yandex
Объявления
10.01.2013, 21:07     Строки в с++. После строки выводятся не понятные символы
Ответ Создать тему
Опции темы

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