Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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 :).

Předmět Autor Datum
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… nový
JoDiK 17.10.2017 16:06
JoDiK
Pomocou funkcie scanf načítavaš reťazec (%s), ktorý ukladáš do premennej x, ktorá má ale miesto len… nový
los 17.10.2017 16:06
los
Ok, Díky moc! :) poslední
Loupy 17.10.2017 16:12
Loupy

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]).

Zpět do poradny Odpovědět na původní otázku Nahoru