Stránka 1 z 1

C - nejde načíst znak

Napsal: úte 20. pro 2011, 22:43
od krakenuss
Dělám jeden program do školy a potřebuju načíst nak z klávesnice ale pokaždé když program dojde do fáze kdy má načíst znak tak to přeskočí a pokračuje za načítáním, prostě nic nenačte. Zkoušel jsem to pomocí funkce getchar() i pomocí scnaf("%c", &x). Fakticky nevím co s tím, a nestalo se mi to porvé. Jestli někdo víte jak ten problém vyřešit, prosím poraďte.

Dělám v Code::Blocks ale to samé mi to děla i v Dev-C++.



EDIT:
A jak jsem právě zjistil, v tom samem IDE jsem si jen na zkoušku udělal jednoduchy programek ktery jenom nacte a vzpise znak a ono to najednou funguje. Ja uz tomu fakt nerozumim. Prvni se vykaslu na Turbo C++ protoze nedodržuje normu C99, tudíž nefunguje deklarace proměnných jinde než na začátku a u Code::Blocks zase tohle, jsem fakt zvedavy jak ten program dodelam.

EDIT:
jestli to pomuže, tohle ja zadani prikladu:
Vytvořte program pro kalkulačku, a to takovou, která se bude ptát na další operaci a číslo, a to dokud nebude zadána značka pro konec. Teprve poté se vypíše výsledek. Značka pro konec bude K nebo k. (Např. 5+5*5/2k=25)
vim ze je to lehke, taky myslim ze vim jak na to ale jestli se nemylim tak potrebuju nacist ty znaky.

Re: C - nejde načíst znak

Napsal: stř 21. pro 2011, 10:18
od beardie
ak chces poradit s kodom, bolo by dobre vlozit ho sem, lepsie sa opravuje nieco, co je priamo vidiet

Re: C - nejde načíst znak

Napsal: stř 21. pro 2011, 12:24
od krakenuss

Kód: Vybrat vše

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int op;
  float vysledek;
  float n;

  scanf("%f", &vysledek);

  while (1)
  {
    op = getchar();

    if (op == 'k' || op == 'K')
      break;

    scanf("%f", &n);


    if (op == '+')
      vysledek += n;
    if (op == '-')
      vysledek -= n;
    if (op == '*')
      vysledek *= n;
    if (op == '/')
      vysledek /= n;
  }

  printf("Vysledek: %f\n", vysledek);
  
  getch();
  return 0;
}
myslim ze to mam dobre, ale clovek nikdy nevim, jsem prece jenom student 2. ročníku střední školy

Re: C - nejde načíst znak

Napsal: stř 21. pro 2011, 17:22
od yuri.cs
getch jsem zmenil na getcahr a v pohode prelozeno gcckem.

Nacitat to znaky nacita.

Re: C - nejde načíst znak

Napsal: stř 21. pro 2011, 18:08
od krakenuss
yuri.cs píše:getch jsem zmenil na getcahr a v pohode prelozeno gcckem.

Nacitat to znaky nacita.
To mi najednou taky a to jsem nic nezmenil. Zajimave že to včera nešlo

Re: C - nejde načíst znak

Napsal: stř 21. pro 2011, 18:46
od mr.qeg
sory za OT, ale proč je tam vlastně ten poslední getchar() před returnem?

Re: C - nejde načíst znak

Napsal: stř 21. pro 2011, 18:50
od yuri.cs
mr.qeg píše:sory za OT, ale proč je tam vlastně ten poslední getchar() před returnem?
kdyz poklepes na exe ve Winech, tak se ti spusti konzole, problikne vysledek a hned po tom se konzole zavre. getchar() tomu logicky zabrani, alespon myslim.

Re: C - nejde načíst znak

Napsal: čtv 22. pro 2011, 13:21
od krakenuss
yuri.cs píše:
mr.qeg píše:sory za OT, ale proč je tam vlastně ten poslední getchar() před returnem?
kdyz poklepes na exe ve Winech, tak se ti spusti konzole, problikne vysledek a hned po tom se konzole zavre. getchar() tomu logicky zabrani, alespon myslim.
přesně tak :)

Re: C - nejde načíst znak

Napsal: čtv 22. pro 2011, 14:04
od mr.qeg
Jasně, holt jsem nikdy nepřekládal zdroják ve Windows. :)

Re: C - nejde načíst znak

Napsal: čtv 22. pro 2011, 17:22
od krakenuss
mr.qeg píše:Jasně, holt jsem nikdy nepřekládal zdroják ve Windows. :)
Já windows trpím jenom kvůli hrám, a bohužel mám poslední době problém s instalaci Ubuntu viz . http://pctforum.tyden.cz/viewtopic.php?f=36&t=178402

Re: C - nejde načíst znak

Napsal: pát 23. pro 2011, 10:39
od mr.qeg
Nechápej mě špatně, já Linuxák rozhodně nejsem, ale na jednoduché programování v C je Linux lepší.