Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
D_Ok
44 / 33 / 27
Регистрация: 11.02.2014
Сообщений: 134
#1

Неправильный вывод в строке типа char

21.04.2014, 23:52. Просмотров 428. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
char * word = new char [5];
    for (int i = 0; i < 5 - 1; i++)
        word[i] = 'a';
    cout <<  word << endl;
почему кроме 4-х а выводится еще какой-то мусор? помогите разобраться...

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 23:52
Ответы с готовыми решениями:

Условие типа if( масив типа char[x] [y] != переменная типа char) не срабатывает
Создал функцию ChangeWay(). Все, кроме if(map !=ar) (обе переменные типа...

Сортировка цифр в строке типа char
Здравствуйте! Помогите, пожалуйста, дописать программу. Прогррамма должна...

Поиск объекта в классе по строке типа char
Есть такая задача : Описать класс с именем PRICE, содержащий следующие поля: ...

Проверить правильность ввода в строке типа char
Здравствуйте. Такой вопрос: Есть строковый массив и запись в него, но как при...

Вывод переменной типа char
Переменная x типа char. x = 65; cout &lt;&lt; x; Так выводиться &quot;A&quot;. x =...

8
Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
Завершенные тесты: 1
21.04.2014, 23:58 #2
word[4] = 0; // конец строки
1
DoOj
3 / 3 / 3
Регистрация: 28.03.2014
Сообщений: 38
22.04.2014, 00:01 #3
D_Ok, не знаю что вы курите, но у меня все нормально
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(){
    
char * word = new char [5];
    for (int i = 0; i < 5 - 1; i++)
        word[i] = 'a';
    cout <<  word << endl;
    return 0;
}
0
D_Ok
44 / 33 / 27
Регистрация: 11.02.2014
Сообщений: 134
22.04.2014, 00:05  [ТС] #4
Цитата Сообщение от Vaiz Посмотреть сообщение
word[4] = 0 // конец строки
да я это знаю, просто думал что нулевой символ сам добавился бы, как это было бы при присвоение массиву полностью строки. Присвоил последнему элементу нулевой символ, помогло.
0
ValeryS
Модератор
7169 / 5436 / 674
Регистрация: 14.02.2011
Сообщений: 18,366
22.04.2014, 00:07 #5
Цитата Сообщение от DoOj Посмотреть сообщение
не знаю что вы курите, но у меня все нормально
повезло
Цитата Сообщение от D_Ok Посмотреть сообщение
почему кроме 4-х а выводится еще какой-то мусор? помогите разобраться...
потому что нет конца строки( завершающий 0) и выводится все что есть в памяти пока не встретится 0
поэтому самому нужно вписать 0 в нужное место
о чем и было написано
Цитата Сообщение от Vaiz Посмотреть сообщение
word[4] = 0; // конец строки
DoOj, а память освобождать не нужно?

Добавлено через 1 минуту
Цитата Сообщение от D_Ok Посмотреть сообщение
да я это знаю, просто думал что нулевой символ сам добавился бы,
это с чего бы?
1
D_Ok
44 / 33 / 27
Регистрация: 11.02.2014
Сообщений: 134
22.04.2014, 00:07  [ТС] #6
Цитата Сообщение от DoOj Посмотреть сообщение
D_Ok, не знаю что вы курите, но у меня все нормально
значит вам повезло, и сразу встретился 0, протестируйте еще...
0
Aloir
219 / 219 / 38
Регистрация: 17.12.2010
Сообщений: 710
22.04.2014, 00:09 #7
DoOj, вы смотрите в дебаге и у вас скорее всего компилятор обнуляет используемую память, в релизе же будет не предсказуемый результат.

D_Ok, добавить '\0' как посоветовал Vaiz, а еще советую инициализировать память
C++
1
memset(str,0,strlen(str));
.. да и вообще все переменные. в будущем облегчит жизнь
1
ValeryS
Модератор
7169 / 5436 / 674
Регистрация: 14.02.2011
Сообщений: 18,366
22.04.2014, 00:11 #8
Цитата Сообщение от Aloir Посмотреть сообщение
memset(sss,0,strlen(sss));
а strlen(sss) какое число вернет у не инициализированной памяти?
0
Aloir
219 / 219 / 38
Регистрация: 17.12.2010
Сообщений: 710
22.04.2014, 00:14 #9
ValeryS, вай, точно. короче размер туда!)

Не по теме:

надо заканчивать делать несколько дел одновременно 8-) сколько уже от этого страдаю ..

0
22.04.2014, 00:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 00:14

Как полю класса типа char* присвоить значение типа *char
Проблема в строчке 46 (не пинайте сильно за формат кода и за говнокод) ...

Замена одного слова на другое в строке типа char
Замена одного символа на другой в строке типа char - C++ Вообщем есть массив...

Как изменить первые 5 байт в строке типа char
Ламерский вопрос! Есть строка,как изменить в ней первые 5 байт, в них должна...


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

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

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