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

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

Войти
Регистрация
Восстановить пароль
 
final_headshot
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 7
#1

Вывод char* вызывает System.NullReferenceException - C++

16.01.2014, 20:17. Просмотров 258. Ответов 6
Метки нет (Все метки)

Здраствуйте.
Требуется написать функцию, которая преобразует число из десятичной системы в двоичную. Вот что получилось:
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
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <iostream>
 
using namespace System;
using namespace std;
int a[10]={512, 256, 128, 64, 32, 16, 8, 4, 2, 1};
 
void NumberAsBinary(
    char *       _result, // строка с результатом
    unsigned int _number  // произвольное число
  )
{
  int temp = _number;
  for (int i = 0; temp != 0, i<10; i++)
  {
    if (temp>=a[i])
    {
      temp-=a[i];
      _result+='1';
    }
    else _result+='0';
  }
  cout<<"norm\n";
}
int main(array<System::String ^> ^args)
{
  char *r;
  unsigned int n;
  cout<<"Enter value: ";
  cin>>n;
  NumberAsBinary(r, n);
  cout<<"Binary: "<<*r;
  system("pause");
  return 0;
}
Вопрос не в правильности данного кода. Дело в том, что после вводадесятичного числа, выполнения этой функции и вывода строки "Binary: " появляется следующая ошибка. Объясните, в чем дело?
п.с. Результат функции обязательно должен быть char *
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 20:17     Вывод char* вызывает System.NullReferenceException
Посмотрите здесь:

Преобразование Char в System::String - C++
Здравствуйте! Я пишу программу по типу монитора системных ресурсов. Название процессора решил взять из реестра. В консоли все прошло...

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Char вывод - C++
Как вывести символы из массива символов char числа?

Вывод system() в программу - C++
Так вот: Нужно каким-либо обазом читать вывод system() из самой программы. Я знаю о возможности записывать вывод в файл, а затем читать...

Вывод char из функции - C++
выводит первую букву слово, подскажите ошибку ... исполняемый файл #include &quot;stdafx.h&quot; #include &quot;Header.h&quot; #include...

вывод массива char* - C++
Подскажите, как вывести массив char без мусора? есть такой код: char* mes = new char; int i = 0; for (string::iterator iter =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6538 / 5004 / 460
Регистрация: 14.02.2011
Сообщений: 16,645
16.01.2014, 21:46     Вывод char* вызывает System.NullReferenceException #2
Цитата Сообщение от final_headshot Посмотреть сообщение
Вопрос не в правильности данного кода.
а в чем еще то?
Цитата Сообщение от final_headshot Посмотреть сообщение
char *r;
память то кто выделять будет?

напиши хотя бы
C++
1
char r[100];
final_headshot
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 7
17.01.2014, 21:10  [ТС]     Вывод char* вызывает System.NullReferenceException #3
Спасибо, а не подскажите, как правильно добавлять символы к char*? Я немного переделал код:
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
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <iostream>
 
using namespace System;
using namespace std;
int a[10]={512, 256, 128, 64, 32, 16, 8, 4, 2, 1};
 
void NumberAsBinary(
    char *       _result[], // строка с результатом
    unsigned int _number  // произвольное число
  )
{
  int temp = _number;
  for (int i = 0; temp != 0, i<10; i++)
  {
    if (temp>=a[i])
    {
      temp-=a[i];
      *_result[i]='1';
    }
    else *_result[i]='0';
  }
  cout<<"norm\n";
}
int main(array<System::String ^> ^args)
{
  char *r[11];
  unsigned int n;
  cout<<"Enter value: ";
  cin>>n;
  NumberAsBinary(r, n);
  cout<<"Binary: "<<*r<<"\n";
  system("pause");
  return 0;
}
Но во время выполнения функции NumberAsBinary вылетает исключение
ValeryS
Модератор
6538 / 5004 / 460
Регистрация: 14.02.2011
Сообщений: 16,645
17.01.2014, 21:27     Вывод char* вызывает System.NullReferenceException #4
Цитата Сообщение от final_headshot Посмотреть сообщение
char * * * * _result[],
вот этим ты передаешь массив указателей
или как было
C++
1
 char *_result
указатель на массив
или массив char-ов
C++
1
char _result[]
Цитата Сообщение от final_headshot Посмотреть сообщение
char *r[11];
вот здесь ты опять создаешь массив указателей
тебе нужно объявить
C++
1
char r[11]
и тогда при вызове
NumberAsBinary(r, n); передастся адрес на массив т.е char *
final_headshot
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 7
17.01.2014, 21:34  [ТС]     Вывод char* вызывает System.NullReferenceException #5
ValeryS, тогда появляется ошибка error C2664: NumberAsBinary: невозможно преобразовать параметр 1 из "char [11]" в "char *[]" при вызове функции
ValeryS
Модератор
6538 / 5004 / 460
Регистрация: 14.02.2011
Сообщений: 16,645
17.01.2014, 21:38     Вывод char* вызывает System.NullReferenceException #6
да и в функции у тебя накосячено
во первых нет завершающего 0
во вторых
Цитата Сообщение от final_headshot Посмотреть сообщение
int a[10]={512, 256, 128, 64, 32, 16, 8, 4, 2, 1};
можно и без этого обойтись
вот примерно вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void NumberAsBinary(
  char * result, // строка с результатом
  unsigned int _number  // произвольное число
 )
{
 int i=10;
 result[i]='\0'; // заносим 0 в конец строки 
for(;i>-1;i--)
  {
    result[i]=n%2+'0'; // выделяем младший разряд и добавляем к символу "0", если будет 1 то запишем "1" если 0 то запишем "0"
    n/=2;// сдвигаем вправо число ( делим на 2) подготавливаем следующий разряд 
  }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2014, 19:08     Вывод char* вызывает System.NullReferenceException
Еще ссылки по теме:

Вывод массива char - C++
Почему вообще работает этот код?(пробовал с целочисленным массивом,такого результата как тут не наблюдается)Он выводит элементы массива и...

Вывод результата system в файл - C++
(C++; Visual Studio; консольное приложение) при попытке вывести в файл, например system(&quot;dir&quot;) результат выводится в консольное...

Вывод массива char* на консоль - C++
Пытаюсь вывести массив чаров в консоль, но выходит какая-та белеберда. Вывод в: for (size_t i = 0; i &lt; 20; i++) { cout &lt;&lt;...

вывод слова на экран с типом char. - C++
Помогите пожалуйста не могу решить программу... Дано слово. Вывести это слово на экран с 4 знаками &lt;&lt;+&gt;&gt; в начале слова и с 5 знаками &lt;&lt;*&gt;&gt;...


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

Или воспользуйтесь поиском по форуму:
final_headshot
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 7
18.01.2014, 19:08  [ТС]     Вывод char* вызывает System.NullReferenceException #7
ValeryS, спасибо большое, работает
Yandex
Объявления
18.01.2014, 19:08     Вывод char* вызывает System.NullReferenceException
Ответ Создать тему
Опции темы

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