C - nejde načíst znak

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
krakenuss
Začátečník
Začátečník
Registrován: 14. úno 2010

C - nejde načíst znak

Příspěvek 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.
beardie
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 10. srp 2005

Re: C - nejde načíst znak

Příspěvek od beardie »

ak chces poradit s kodom, bolo by dobre vlozit ho sem, lepsie sa opravuje nieco, co je priamo vidiet
¿ʇı ʇ,usı 'ƃuıʎouuɐ ʎʇʇǝɹd sı uʍop ǝpısdn ƃuıpɐǝɹ
krakenuss
Začátečník
Začátečník
Registrován: 14. úno 2010

Re: C - nejde načíst znak

Příspěvek 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
yuri.cs
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 03. led 2007
Bydliště: hl.m. piva
Kontaktovat uživatele:

Re: C - nejde načíst znak

Příspěvek od yuri.cs »

getch jsem zmenil na getcahr a v pohode prelozeno gcckem.

Nacitat to znaky nacita.
It will be amazing in case after 10GHz we will see 20GHz, 30GHz and so on, just like we witnessed the thorny way from 10MHz to 33MHz in the eighties. -xbitlabs.com
krakenuss
Začátečník
Začátečník
Registrován: 14. úno 2010

Re: C - nejde načíst znak

Příspěvek 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
mr.qeg
Začátečník
Začátečník
Registrován: 05. srp 2007
Bydliště: Dresden

Re: C - nejde načíst znak

Příspěvek od mr.qeg »

sory za OT, ale proč je tam vlastně ten poslední getchar() před returnem?
yuri.cs
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 03. led 2007
Bydliště: hl.m. piva
Kontaktovat uživatele:

Re: C - nejde načíst znak

Příspěvek 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.
It will be amazing in case after 10GHz we will see 20GHz, 30GHz and so on, just like we witnessed the thorny way from 10MHz to 33MHz in the eighties. -xbitlabs.com
krakenuss
Začátečník
Začátečník
Registrován: 14. úno 2010

Re: C - nejde načíst znak

Příspěvek 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 :)
mr.qeg
Začátečník
Začátečník
Registrován: 05. srp 2007
Bydliště: Dresden

Re: C - nejde načíst znak

Příspěvek od mr.qeg »

Jasně, holt jsem nikdy nepřekládal zdroják ve Windows. :)
krakenuss
Začátečník
Začátečník
Registrován: 14. úno 2010

Re: C - nejde načíst znak

Příspěvek 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
mr.qeg
Začátečník
Začátečník
Registrován: 05. srp 2007
Bydliště: Dresden

Re: C - nejde načíst znak

Příspěvek od mr.qeg »

Nechápej mě špatně, já Linuxák rozhodně nejsem, ale na jednoduché programování v C je Linux lepší.
Odpovědět

Zpět na „Programování a web“