Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/107: Рейтинг темы: голосов - 107, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 10.03.2018
Сообщений: 27
1

Инициализация пустого динамического массива

12.06.2018, 16:25. Показов 20294. Ответов 8

Author24 — интернет-сервис помощи студентам
Выводит мусор хранящиеся в массиве. Как инициализировать символьный динамический массив нулями?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
int main()
{
 
 
    char *users = new char[];   //Массив исходного текста
        //char users[] = {0};   Для статического массива
    
    cout << users << endl;  //Это сейчас в массиве
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2018, 16:25
Ответы с готовыми решениями:

Инициализация Динамического массива
Друзья просмотрите пожалуйста мой динамический массив правильно ли я его длясебястолковал ...

Инициализация динамического массива
Народ, подскажите как сделать так что бы, можно было задать размер массива через консоль, а не в...

Инициализация динамического массива
Прога генерирует случайные числа(1-100) выводит их, пока не встретится 98, сохраняя все в массиве....

Инициализация динамического массива
Создан динамический массив (при помощи функций). Пробую инициализировать при помощи фигурных...

8
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
12.06.2018, 16:35 2
А размер где?
0
Модератор
Эксперт С++
13505 / 10756 / 6411
Регистрация: 18.12.2011
Сообщений: 28,711
12.06.2018, 16:37 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring> 
using namespace std;
 
int main()
{
    char* txt="Hellow world"; //Массив исходного текста
    int n=strlen(txt);
    char *users = new char[n+1];  
    strcpy(users,txt);
    cout << users << endl;  //Это сейчас в массиве
 
    delete[] users;
    system("pause");
    return 0;
}
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
12.06.2018, 16:48 4
Лучший ответ Сообщение было отмечено RainyDay как решение

Решение

Нулями - можно пустыми скобками:
C++
1
2
3
new char[n]{}
// или
new char[n]()
1
0 / 0 / 0
Регистрация: 10.03.2018
Сообщений: 27
13.06.2018, 11:04  [ТС] 5
Somebody,

Цитата Сообщение от Somebody Посмотреть сообщение
1
2
3
new char[n]{}
// или
new char[n]()
Так не получается, компилятор старый (MVS 2008)

Добавлено через 13 минут
zss,

Спасибо, теперь понял!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
 
    char *txt = new char[]; //Массив исходного текста
    gets(txt);
    int n=strlen(txt);
    char *users = new char[n+1];  
    strcpy(users,txt);
    cout << users << endl;  //Это сейчас в массиве
 
    delete[] users;
    delete[] txt;
 
    system("pause");
    return 0;
}
0
Модератор
Эксперт С++
13505 / 10756 / 6411
Регистрация: 18.12.2011
Сообщений: 28,711
13.06.2018, 13:33 6
Получается, что не поняли
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <сstring>
 
using namespace std;
 
int main()
{
 
    char txt[1000]; //размер надо указывать
    cin.getline(txt,1000);
    int n=strlen(txt);
    char *users = new char[n+1];  
    strcpy(users,txt);
    cout << users << endl;  //Это сейчас в массиве
 
    delete[] users;
 
    system("pause");
    return 0;
}
А лучше переходите на string
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
 
    string users; //Массив исходного текста
    getline(cin,users);
    cout << users << endl;  //Это сейчас в массиве
 
    system("pause");
    return 0;
}
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
14.06.2018, 12:09 7
Цитата Сообщение от RainyDay Посмотреть сообщение
Так не получается, компилятор старый (MVS 2008)
С круглыми скобками не получается? Это же вроде C++03.
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,075
Записей в блоге: 2
14.06.2018, 14:44 8
Цитата Сообщение от RainyDay Посмотреть сообщение
Как инициализировать символьный динамический массив нулями?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdlib>
#include <algorithm>
 
int main(int argc, char* argv[]) {
  int mode = argc > 1 ? std::atoi(argv[1]) : 1;
  int n = 1024 * 1024 * 1024 * 1;
  char* buf = new char[n];
 
// Четыре способа заполнить нулями:
  if (mode == 1)
    std::memset(buf, 0, n * sizeof(*buf));
  else if (mode == 2)
    bzero(buf, n * sizeof(*buf));
  else if (mode == 3)
    std::fill(buf, buf + n, 0);
  else if (mode == 4)
    std::fill(buf, buf + n, '\0'); // вроде самый быстрый
  return buf[0];
}
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
14.06.2018, 20:45 9
Цитата Сообщение от XLAT Посмотреть сообщение
std::fill
std::uninitialized_fill
0
14.06.2018, 20:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2018, 20:45
Помогаю со студенческими работами здесь

Инициализация динамического массива
int main() { int a, i = 0; int *array = new int ; std::cout &lt;&lt; &quot;Enter numbers &quot; &lt;&lt;...

Инициализация N-мерного динамического массива
Добрый день. Возникла идея написать функцию, которая инициализировала n-мерный динамический...

Инициализация двумерного динамического массива
Как задать численные значения элементам двумерного динамического массива при его инициализации? ...

Инициализация двумерного Динамического массива
У меня вопрос. Могу ли я создать двумерный динамический массив и инициализировать его своими...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru