[ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
NapísalOffline : 06.01.2009 13:10 | preco

zdravim..preco ak zadam nejaky znak rozny od enteru(\n) tak sa program nevypne ?
Kód:
#include <stdio.h>

int main()
{
  int c;

  while ((c = getchar()) = '\n') {
    printf("%c",c);
  }

  return 0;
}


Offline

Užívateľ
Užívateľ
preco

Registrovaný: 30.05.06
Prihlásený: 28.06.15
Príspevky: 2278
Témy: 45 | 45
Bydlisko: ZA
NapísalOffline : 06.01.2009 13:18 | preco

Kód:
while ((c = getchar()) = '\n') {

=>
Kód:
while ((c = getchar()) == '\n') {

bez toho by ti to ani skompilovat nemalo...(kazdopadne po uprave mi to funguje)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 06.01.2009 13:25 | preco

aha..sakra,ja som si nevsimol ze tam nemam == a rozmyslal som nad tym ze kde je chyba..mozes mi vysvetlit preco nasledujuci prikaz pracuje tak ze odstrani vsetky znaky za nacitanym znakom ? Neviem si to nejak prelozit ako to pracuje, ak nacitany znak sa nerovna \n tak co ?

Kód:
while (getchar() != '\n')
  ;


Offline

Užívateľ
Užívateľ
preco

Registrovaný: 19.09.06
Prihlásený: 19.02.26
Príspevky: 749
Témy: 31 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 06.01.2009 14:27 | preco

tak v tomto pripade nic, kedze je tam iba ";". Ked za while nadas zlozene zatvorky, tak sa vykonava iba prikaz, ktory nasleduje bezprostredne za while. A tym je v tomto pripade ;, co je nic nerobiaci prikaz, ked si tam mal printf, tak ho vypisalo.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 06.01.2009 15:23 | preco

ale ako vlastne funguje to nacitavanie znakov ?
Ak zadam do vstupu nejake znaky a ukoncim vstup enterom, tak buffer sa vyprazdni a do premennej sa postupne nacitavaju znaky z bufferu v tomto pripade ?
Kód:
while ((c = getchar()) != '*') {
    printf("%c",c);
}

a ak mam kod doplneny o tento prikaz while (getchar() != '\n')..tak preco mi berie do uvahy len 1znak ? Preco neberie vsetky znaky,ved znak \n je az na konci ked ukoncujem vstup. Lebo v 1.pripade ak zadam do vstupu znaky abcd,tak mi ich aj vypise a tu ak zadam tie iste znaky tak vypise len a.
Kód:
while ((c = getchar()) != '*') {
    while (getchar() != '\n')
      ;
    printf("%c",c);
}



Offline

Užívateľ
Užívateľ
preco

Registrovaný: 19.09.06
Prihlásený: 19.02.26
Príspevky: 749
Témy: 31 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 06.01.2009 15:33 | preco

lebo v tom druhom pripade tie znaky sice nacitas, ale nikam ich nepriradujes, cize hodnota premennej c zostava ta ista ako na zaciatku, co je prve pismeno zadaneho retazca

a pomocou
while (getchar() != '\n')
;
buffer vyprazdnis, cize uz getchar v prvom while nema co nacitat, tak sa uz nic viac nevypise.


Naposledy upravil stopa27 dňa 06.01.2009 15:41, celkovo upravené 1

Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 06.01.2009 15:41 | preco

preco ich nikam nepriradujem ? Ved tiez by mali byt najprv v bufferri a potom postupne po znaku do premennej nie ? Nechapem to...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 03.12.25
Príspevky: 884
Témy: 3 | 3
NapísalOffline : 06.01.2009 19:18 | preco

Mozes si to predstavit napriklad takto
Kód:
while ((c = getchar()) != '*') {
    while ((d=getchar()) != '\n')
      ;
    printf("%c",c);
}

Prvy znak sa ulozi do premennej c, a ostatne sa postupne ukladaju do premennej d, teda tato premenna sa stale prepisuje, az dokym v bufferi nie je znak '\n'. Ked tam to d nie je, tak sa ten nacitany znak proste nepriradi nikde... :)

P0M4R4NC - skompilovat by to malo ist, kedze while ((c = getchar()) = '\n') je normalny vyraz, ktory je pravdivy, takze pri spusteni programu by sa vzdy vyhodnotila kladna vetva podmienky. ;)


_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42 | 42
Napísal autor témyOffline : 06.01.2009 19:31 | preco

neutronmind: tak to je uz lepsie chapatelne :)


 [ Príspevkov: 9 ] 


preco



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

MSI FX 603 prečo áno, prečo nie?

v Notebooky a netbooky

5

1604

02.08.2011 22:15

KekkeiGenkai

V tomto fóre nie sú ďalšie neprečítané témy.

Prečo

v Oznámenia a návrhy

5

1512

11.04.2009 14:06

Luks

V tomto fóre nie sú ďalšie neprečítané témy.

Preco?

v Hry a herné konzoly

25

1588

30.06.2007 19:19

tomasko

V tomto fóre nie sú ďalšie neprečítané témy.

empty preco??:(

v Backend

6

617

20.05.2008 16:31

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

preco sakra?

v Oznámenia a návrhy

17

2428

20.12.2007 19:25

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

PRECO NEJDE?

v nVidia grafické karty

12

1018

22.04.2008 20:41

prandof

V tomto fóre nie sú ďalšie neprečítané témy.

Rozmazaný obraz, prečo?

v AMD grafické karty

0

505

25.04.2011 17:06

skanzen

V tomto fóre nie sú ďalšie neprečítané témy.

pomóc mrznem, prečo???

v nVidia grafické karty

7

623

17.08.2007 11:54

mysik

V tomto fóre nie sú ďalšie neprečítané témy.

Prečo len 256Mb?

v nVidia grafické karty

3

553

03.02.2010 20:30

ac.milan

V tomto fóre nie sú ďalšie neprečítané témy.

preco nefachci dualchannel?

v Pamäte

4

627

10.01.2008 13:11

borec

V tomto fóre nie sú ďalšie neprečítané témy.

Preco tak lacneju?

v Pamäte

5

907

07.11.2007 23:06

fuco

V tomto fóre nie sú ďalšie neprečítané témy.

Preco toto nefunguje?

v Backend

3

794

13.08.2011 16:22

juho

V tomto fóre nie sú ďalšie neprečítané témy.

prečo nie 85Hz?

v Monitory, televízory a projektory

11

1578

04.05.2008 12:53

Seth Sparrow

V tomto fóre nie sú ďalšie neprečítané témy.

Prečo používate Adblock

[ Choď na stránku:Choď na stránku: 1, 2, 3 ]

v Krčma

80

4423

02.03.2015 13:08

fakt7

V tomto fóre nie sú ďalšie neprečítané témy.

Ktorý a prečo?

v Notebooky a netbooky

16

752

26.07.2011 21:31

scot

V tomto fóre nie sú ďalšie neprečítané témy.

Prečo zdraželo Poco?

v Prenosné zariadenia

2

688

03.02.2022 20:22

liqua1



© 2005 - 2026 PCforum, edited by JanoF