Ahoj, jsem v programování dá se říct začátečník. Abych si procvičil programování, tak jsem si řekl, že si naprogramuji šibenici. Ale setkal jsem se tu s malým problémem(vyřešil jsem ho, že jsem to naprogramoval jinak, ale chci se zeptat, proč to dělá to co to dělá.
Tato funkce má od vás vzít písmeno a zkontrolovat jestli je v poli a když je, tak ho odkryje. Ale setkal jsem se tu s problémem.
Když program skočí do funkce, tak příkazem scanf("%c", &pismeno); po nás chce jedno písmeno. To zadám, zbytek funkce funguje dobře a provede se, ale když zavolám funkci znova příkazem z mainu, tak to vynechá příkaz scanf("%c", &pismeno); a nic to po mně nechce zadat, počítá to s minulou hodnotou. Až funkce běží po 3. tak to po mně chce hodnotu, ale když po 4. tak ne. Dělá to pořád dokola, každý druhý volání to vynechá.
V mainu volám funkci cyklem
do
{
skryto=Odkryti(slovo, skslovo, delkaslova, &chyba, &pokus);
} while (skryto != 0);
char Odkryti(char pole[],char skpole[], int delka, int *chyby, int *pokus)
{
int skryto;
char pismeno= NULL;
printf("\n%d. pokus Zadej pismeno:", *pokus);
scanf("%c", &pismeno);
++*pokus;
int g = 0;
for (int i = 0; i < delka; ++i)
{
if (pole[i] == pismeno)
{
skpole[i] = pismeno;
++g;
}
}
if (g == 0)
++*chyby;
int y = 0;
for (int i = 0; i < delka; ++i)
{
if ((int)skpole[i] == 95)
++y;
}
for (int i = 0; i < delka; ++i)
printf("%c", skpole[i]);
printf("\n");
printf("Pocet chyb:!%d\n\n",*chyby, *pokus);
return y;
}