

Jednoduchý program v C
Dobrý den, jsem nováček v programování a proto bych zde chtěl poprosit o radu s jednoduchým programem.. respektive pomoct pochopit jeho fungování..
Nevím jestli je možné to v této poradně vůbec řešit, ale za pokus nic nedám :).
Můj dotaz tedy zní:
V tomto jednoduchém programu
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char x;
int i = 0;
while(i<10)
{
scanf("%s", &x);
printf("%s\n", &x);
printf("i je:%i\n", i);
i++;
}
return 0;
}
To, čeho jsem chtěl dosáhnout je, aby se cyklus while vykonal celkem desetkrát (i = 0 - 9) a na konci každého cyklu se i zvýšilo o jedničku..
Jenže program funguje tak, že když zadám jeden, jakýkoliv znak, i se bude rovnat 0.. a to pořád dokola.. a když zadám dva znaky, i se rovná hodnotě v ascii tabulce druhého znaku.. a když zadám tři znaky, hodnota i se už pohybuje v nesmyslně velkých číslech.. Rád bych nějak pochopil v čem je chyba a proč to nefunguje podle mých úmyslů :D Popřípadě kdyby mě někdo popostrčil ke správnému řešení, kterého bych chtěl dosáhnout, byl bych mu také vděčný :D Předem díky :).
Asi si budeš muset znovu přečíst příručku, nebo z čeho se to učíš, jak funguje scanf.
Zřejmě ti to přepisuje paměť v místech, kde už je i.
Céčko neovládám, ale když místo
char x;
dáš
char x[10];
tak už ten cyklus běží...
Pomocou funkcie scanf načítavaš reťazec (%s), ktorý ukladáš do premennej x, ktorá má ale miesto len pre jeden znak (char). Načítaný reťazec je ukončený nulou, takže keď zadáš len jeden znak, tak si koncovou nulou prepíšeš premennú premennú i na nulu. Keď zadáš viac znakov, tak toho prepíšeš viac.
Takže buď vo funkcii scanf použi %c pre načítanie jedného znaku, alebo si vyhraď dostatok miesta pre reťazec, ktorý budeš zadávať (char x[SIZE]).
Ok, Díky moc! :)