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

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

Войти
Регистрация
Восстановить пароль
 
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
#1

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

21.04.2014, 23:52. Просмотров 319. Ответов 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-х а выводится еще какой-то мусор? помогите разобраться...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vaiz
 Аватар для Vaiz
103 / 97 / 30
Регистрация: 01.07.2012
Сообщений: 277
Завершенные тесты: 1
21.04.2014, 23:58     Неправильный вывод в строке типа char #2
word[4] = 0; // конец строки
DoOj
3 / 3 / 0
Регистрация: 28.03.2014
Сообщений: 38
22.04.2014, 00:01     Неправильный вывод в строке типа char #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;
}
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
22.04.2014, 00:05  [ТС]     Неправильный вывод в строке типа char #4
Цитата Сообщение от Vaiz Посмотреть сообщение
word[4] = 0 // конец строки
да я это знаю, просто думал что нулевой символ сам добавился бы, как это было бы при присвоение массиву полностью строки. Присвоил последнему элементу нулевой символ, помогло.
ValeryS
Модератор
6453 / 4919 / 451
Регистрация: 14.02.2011
Сообщений: 16,320
22.04.2014, 00:07     Неправильный вывод в строке типа char #5
Цитата Сообщение от DoOj Посмотреть сообщение
не знаю что вы курите, но у меня все нормально
повезло
Цитата Сообщение от D_Ok Посмотреть сообщение
почему кроме 4-х а выводится еще какой-то мусор? помогите разобраться...
потому что нет конца строки( завершающий 0) и выводится все что есть в памяти пока не встретится 0
поэтому самому нужно вписать 0 в нужное место
о чем и было написано
Цитата Сообщение от Vaiz Посмотреть сообщение
word[4] = 0; // конец строки
DoOj, а память освобождать не нужно?

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

D_Ok, добавить '\0' как посоветовал Vaiz, а еще советую инициализировать память
C++
1
memset(str,0,strlen(str));
.. да и вообще все переменные. в будущем облегчит жизнь
ValeryS
Модератор
6453 / 4919 / 451
Регистрация: 14.02.2011
Сообщений: 16,320
22.04.2014, 00:11     Неправильный вывод в строке типа char #8
Цитата Сообщение от Aloir Посмотреть сообщение
memset(sss,0,strlen(sss));
а strlen(sss) какое число вернет у не инициализированной памяти?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 00:14     Неправильный вывод в строке типа char
Еще ссылки по теме:

C++ Замена одного слова на другое в строке типа char
Неправильный вывод C++
C++ Проверить правильность ввода в строке типа char
C++ Вывод адреса переменной типа char
Поиск объекта в классе по строке типа char C++

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

Или воспользуйтесь поиском по форуму:
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 689
22.04.2014, 00:14     Неправильный вывод в строке типа char #9
ValeryS, вай, точно. короче размер туда!)

Не по теме:

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

Yandex
Объявления
22.04.2014, 00:14     Неправильный вывод в строке типа char
Ответ Создать тему
Опции темы

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