Język c, ładowanie dynamiczne do tablicy liczb

0

int main()
{
int k=0, i;
int liczba[7];
printf("Podaj liczbe do wyswietlenia: ");
while(scanf("%d", &liczba[k]) != '\n'){

	++k;
}

return 0;

}

Co w tym kodzie jest źle. Chce aby liczby były ładowane do tablicy od razu z bufora.

0

A co to za warunek niby? scanf() zwraca LICZBĘ WCZYTANYCH pól a nie jakiś znak. W ogóle wczytujesz liczbę a robisz porównanie z \n. Czego się tu niby spodziewałeś? Że co ci ten scanf zwróci?

0

Scanf ma zapisac liczbe do kolejnych elementow tablicy a gdy wcisne enter ma sie petla zakonczyć

0

Ale to W OGÓLE nie ma prawa zadziałać.

  1. scanf() wymaga stuknięcia enter żeby w ogóle zaakceptować jakiś input z konsoli
  2. scanf() zwraca liczbę parametrów do których wczytał dane (u ciebie będzie to albo 1 albo 0)
  3. scanf() zapisany tak jak tutaj NIGDY nie wczyta ci znaku \n
    Generalnie cały ten kod jest do kosza, bo nijak się ma do twojego problemu.
0

A jak wczytać do tablicy liczby aby były Od razu pobierane z bufora i zapisywane do tablicy.

0

To byłoby problematyczne bez użycia dodatkowych bibliotek, poza ty wczytywałbyś "po znaku" tzn np. 11 to są dwa znaki 1 ;) Proponuje zrobić to tak:

int k=0;
int liczby[7];
while ((k < 7) && (scanf("%d ", &(liczby[k])) == 1)) {
    k++;
}
0

Ale mi chodzi o to aby po kazdej cyfrze nie wciskać enter tylko dopiero po wpisaniu np. 7 cyfr jak wcisne enter, funkcja ma zapisac cyfry do tablicy

0

No i czemu mi nie ufasz? o_O
http://ideone.com/ZzHZjn

0

Ok, sorry już wiem o co chodzi

0

Jeszcze mam problem
W tym kodzie jak go skompiluje to po kazdej liczbie musze wcisnac enter zeby zapisało do tablicy
Mi chodzi o to ze jak wpisze np.
123456
liczby[0]=1
liczby[0]=1

0

liczby[0]=1
liczby[1]=2
liczby[2]=3
liczby[3]=4

2

Człowieku, podstawy matematyki ogarnij przed programowaniem. Nawet pytania zadać nie umiesz bo nie odróżniasz liczby od cyfry.

for(int i,ch=0;isdigit(ch=getchar());liczby[i++]=ch-'0') {}

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