po użyciu itoa zamiast liczby w char mam 0

0

mam taki problem że chce by funkcja itoa zwróciła mi liczbę do tablicy charów ale zawsze mam 0 lub jak nie zrobię przez referencja(nie wiem czy dobrze pamiętam) to nic się nie pojawia.

 
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>

int main()
{
    int how_many_step = 0;
    std::cin >> how_many_step;
    int enter_numbers = 0;
    char enter_numbers_tab[100];
    while (how_many_step > 0)
    {
        std::cout << "pierszy while: " << std::endl;
        int index = 0;
        while ( (std::cin.get() >> enter_numbers) != '\n')
        {
            std::cout << "drugi while: " << std::endl;
            if (index % 2 == 0 || index == 0)
            {
                char result ;
                std::cout << "pierszy if: " << std::endl;
                itoa( enter_numbers , &result, 10);
                std::cout << "to jest result" << result << std::endl;
                enter_numbers_tab[index] = result ;
                std::cout << "tab: " << enter_numbers_tab[index] << std::endl;
                ++index;
            }
            else if (index % 2 == 1)
            {
                std::cout << "drugi if: " << std::endl;
                enter_numbers_tab[index] = ' ';
                std::cout << "tab: " << enter_numbers_tab[index] << std::endl;
                ++index;
            }
        }
        for (int i = 0 ; i < index ; ++i)
        {
            std::cout << "tyle wynosi index: " << index << std::endl;
            std::cout << "pierszy for: " << std::endl;
            std::cout << enter_numbers_tab[i];
        }
        --how_many_step;
    }
    return 0;
}
3

Czemu utrudniasz sobie życie i nie korzystasz z std::string i std::to_string?

 char result ;

Jak chcesz zmieścić liczbę z jednym znaku?

0

ok zrobie to na string chciałem się z tym zadaniem zmierzyć na tab i char. Ok ale mam jedno pytanie jak wpisywałem pojedyncze liczby to i tak to nie działało

3

itoa nie jest standardową funkcją, tj. nie ma żadnej gwarancji, że jakiś kompilator będzie ją wspierać. Dlatego powinieneś korzystać z tego co @carlosmay podpowiada. Ale z czystej ciekawości popatrzmy dlaczego Twój kod nie działa.

  1. Popatrz jak się używa cin.get(): http://en.cppreference.com/w/cpp/io/basic_istream/get
  2. Dlaczego próbujesz wczytać liczbę, a potem konwertować to na string, skoro możesz od razu wczytać jako string?
  3. Drugi argument itoa to adres do tablicy znaków, a nie adres do jednego znaku: http://www.cplusplus.com/reference/cstdlib/itoa/

str should be an array long enough to contain any possible value: (sizeof(int)*8+1) for radix=2, i.e. 17 bytes in 16-bits platforms and 33 in 32-bits platforms.

0

Dziękuje wszystkim za odpowiedzi zastanowię się na tym co napisałeś @twonek (nie powiem na razie to trochę dla mnie magia :D)

1 użytkowników online, w tym zalogowanych: 0, gości: 1