Tablica zawierająca znaki

0
    int n;      
    printf(" \t podaj rozmiar tablicy \t");
    scanf("%d",&n);
    char tablica[n];  //deklaruje tutaj wielkość oraz rodzaj tablicy, w tym wypadku moja tablica bedzie przechowywać znaki 

    int i=0;
    while (i<n)
    {
        printf("podaj %d element tablicy \t", i );
        scanf("%c", &tablica[i]);
        i++;
    }
    return 0;
}

I nie wiedzieć czemu podczas pytania mnie o elementy tablicy wyskakuje "podaj 0 element tablicy podaj 1 element tablicy"
ja podaje jakiś znak, a potem wyskakuje "podaj 2 element tablicy podaj 3 element tablicy"
Zachowuje sie ten program tak jakby moje znak zajmował 2 miejsca w tablicy.
Dlaczego tak sie dzieje ?

jak tak zadeklaruje tablice char tablica[n] to bede miał n-elementową tablice w której każdy element zajmuje 8 bitów bo jest typu char, tak ?

Proszę o pomoc :)

0

Najpewniej wczytuje jeszcze znak nowej linii.

0

dlaczego wczytuje znak nowej linii ? nigdzie nie mam w kodzie "\n"

0

Ale taki znak jest wysyłany do konsoli po naciśnięciu entera.

0

dzięki za szybko pomoc :) czyli sposobem na to jest rozmiar tablicy pomnożyć przez 2, a potem przy wyświetlaniu elementów tablicy wyświetlać co drugi :)
a są jakieś lepsze sposoby ? ;D

0

Wstaw spację w format: scanf("%c ", &tablica[i]); - białe znaki zostaną zignorowane.

0

a są jakieś lepsze sposoby

Najlepiej to po prostu pominąć ten enter podczas wczytywania danych - jest o tym pełno w internecie napisane...

0

... i nikt nie zaczął flejma o VLA? ;-D

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