konwersja int to *char

konwersja int to *char
I2
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 2 lata
  • Postów:229
0

CZy może mi ktoś doradzić co tu jest nie tak ? bo wyczytałem na forum by użyć itoa do zamiany int na char, ale niestety program wtedy wyswietla mi 0.

Kopiuj
char *wartosc;

DuzaLiczba::DuzaLiczba(int liczba){
		int b = 0;
		
		while(liczba=liczba/10)b++;
		 wartosc = new char (b);
	

		
		itoa(liczba,wartosc,10);
			cout<<wartosc;
		 
	}

Natomiast gdy używam konwersji niejawnej

Kopiuj
 
int b = 0;
		
		while(liczba=liczba/10)b++;
		 wartosc = new char (b);
	

		wartosc =(char*) liczba ;
		
			cout<<wartosc;

nic mi nie wyświetla :/

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:około miesiąc
0
edytowany 1x, ostatnio: spartanPAGE
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
2

W pierwszym kodzie źle liczysz rozmiar bufora (zawsze o dwa znaki, dla liczb ujemnych - o trzy);
W drugim przypadku traktujesz liczbę jako numer komórki w pamięci komputera i próbujesz stamtąd wyświetlić napis.
Zastanów się nad:

Kopiuj
DuzaLiczba::DuzaLiczba(int liczba)
  {
   wartosc=new char[(int)log10(abs(liczba+0.5))+(liczba<0)+2];
   itoa(liczba,wartosc,10);
   cout<<wartosc; 
  }

ewentualnie nad:

Kopiuj
DuzaLiczba::DuzaLiczba(int liczba)
  {
   wartosc=new char[12]; // dowolna liczba się zmieści i jeszcze na znak końca starczy
   itoa(liczba,wartosc,10);
   cout<<wartosc; 
  }

lub nawet:

Kopiuj
DuzaLiczba::DuzaLiczba(int liczba)
  {
   cout<<liczba;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon
I2
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 2 lata
  • Postów:229
0

może się wygłupi ale mógłbyś wyjaśnić co się dzieje w tym fragmencie ?

Kopiuj
 abs(liczba+0.5))+(liczba<0)+2

abs - warto bezwzgledna, ale skąd się bierze ta cała reszta ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.