Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
sikeman

Помогите найти ошибку

29.11.2008, 15:27. Показов 961. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Короче написал прогу, в которой вводится строка, и в ней надо заменить первое слово. Всё работает нормально но при выводе конечной строки на экран к ней добавляются непонятные символы, и я не могу никак понять в чём косяк. Ниже привожу код программы и картинку с изображением результата.
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <stdio.h>


class STRING
{
char *line;
int len;
public:
STRING();
STRING(char*);
STRING(const STRING &);
~STRING();
void print();
void input_string(char *);
void change();
};
STRING::STRING()
{
line=new char[256];
if(!line)
cout << "Memory error!" << endl;
for(int i=0;i<255;i++)
line[i]=0;
len=strlen(line);
cout<<"WORKING CONSTRUCTOR WITHOUT PARAMETERS"<<endl;
}
STRING::STRING(char *ln)
{
len = strlen(ln);
line=new char[len+1];
if(!line)
cout << "Memory error!" << endl;
strcpy(line,ln);
cout<<"WORKING CONSTRUCTOR WITH PARAMETERS"<<endl;
}
STRING::STRING(const STRING &obj)
{
len = obj.len;
line = new char [len + 1];
if(!line)
cout << "Memory error!" << endl;
strcmp(line, obj.line);
cout<<"Rabotaet konstruktor generator kopij"<<endl;

}
STRING::~STRING()
{
delete []line;
cout<<"WORKING DESTRUCTOR"<<endl;
}
void STRING::print()
{
cout<<line<<endl;
cout<<len<<endl;
}
void STRING::input_string(char * s)
{
delete []line;
len = strlen(s);
line = new char[len+1];
if(!line)
cout << "Memory error!" << endl;
strcpy(line, s);

}
void STRING::change()
{
int num = 0, tmp_len1, tmp_len2, k=0;
char ln1[80], *ln2, *ln3;
cout<<"Input word"<<endl;
cin>>ln1;
tmp_len1 = strlen(ln1);
while((line[k]!=' ') && (k<=len))
{
num=k;
k++;
}
ln2 = new char[len-num+1];
if(!ln2)
cout << "Memory error!" << endl;
for(int i=0;i<(len-num);i++)
ln2[i]=line[i+num+1];
tmp_len2 = strlen(ln2);
cout<<tmp_len2<<endl;
len = tmp_len1 + tmp_len2;
ln3 = new char[len+1];
if(!ln3)
cout << "Memory error!" << endl;
for(i=0; i<len; i++)
{
if(i<tmp_len1)
ln3[i] = ln1[i];
else
ln3[i] = ln2[i-tmp_len1];
}
delete []line;
line = new char[len+1];
if(!line)
cout << "Memory error!" << endl;
strcpy(line, ln3);
delete []ln2;
}
int main()
{
STRING ptr;
char tmp[256];
cout<<"enter"<<endl;
gets(tmp);
ptr.input_string(tmp);
ptr.print();
ptr.change();
ptr.print();
_getch();
return 0;
}
Вложения
Тип файла: txt прога.txt (2.2 Кб, 22 просмотров)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2008, 15:27
Ответы с готовыми решениями:

Помогите найти ошибку: По двум сторонам и углу найти все остальное
Доброго времени суток. В универе дали задание написать программу &quot;По двум сторонам и углу между ними в треугольнике АВС найти два остальных...

Помогите найти ошибку
Здравствуйте! Я написал код, скомпилировал без ошибок, запустил и у меня ничего не вывелось в консоле, подскажите в чем проблема. Вот код: ...

Помогите найти ошибку
Помогите, с этим кодом неправильно..(( proizv красным почерком #include &lt;iostream&gt; using namespace std; int main() { int ...

2
17 / 16 / 6
Регистрация: 20.11.2008
Сообщений: 81
29.11.2008, 18:25
ппц... Ты при копировании, например (код не смотрел) забыл поставить НУЛЛ-символ конца строки!!!
1
sikeman
29.11.2008, 18:51
StarWorm, спасибо, спасло добавление строки ln3[len+1]=NULL;
но спасла ещё изамена
Code
1
2
3
4
5
6
7
   for(i=0; i<len; i++)
    {
        if(i<tmp_len1)
            ln3[i] = ln1[i];
        else
            ln3[i] = ln2[i-tmp_len1];
    }
на
Code
1
2
3
4
5
6
7
    for(i=0; i<len; i++)
    {
        if(i<tmp_len1)
            strcpy(&ln3[i], &ln1[i]);
        else
            strcpy(&ln3[i], &ln2[i-tmp_len1]);
    }
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2008, 18:51
Помогаю со студенческими работами здесь

Помогите найти ошибку
Когда компилирую программа выполняется ровно до того момента пока не спрашивает : &quot;Повторить?&quot;,после введенного значения...

помогите найти ошибку
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

помогите найти ошибку
доброе время суток Столкнулся с такой проблемой, надо сделать прогу которая: Вводим текст, и из этого текста удаляем слова которые...

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

Помогите найти ошибку
//Даны три положительных числа а, b, c. Проверить, могут ли они быть длинами сторон треугольника. Если да, то вычислить площадь этого...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru