Dziwne zjawisko :)

0

Dlaczego gdy wewnątrz funkcji zostanie użyte getline(), nie powoduje ono żadnego skutku, np :

fragment kodu :

case 1 : Linia();

void Linia()
{
char znak[20];

cin.getline(znak, 20);

cout &lt&lt znak;

}

Gdy getline jest użyte w main'ie (), wszystko jest OK. Dlaczego ?

Można spróbować uruchomić poniższy program, nie widać skutków jego działania !

PROGRAM

#include &ltiostream.h&gt

void Linia();

main()
{
int wybor;

cout &lt&lt " WYBOR : " ;
cin &gt&gt wybor;

switch (wybor)
{

case 1 :        Linia();
        break;

default :       cout &lt&lt "Blad!" &lt&lt endl;
        break;
}
return(0);

}

void Linia()
{
char znak[20];

cin.getline(znak, 20);

cout &lt&lt znak;

}

MÓJ MAIL : [email protected]
Z góry THX!--Dawid_M

0

Zacznijmy od tego, że jest błąd w 'switch', powinno być tak.
switch (wybor)
{
case 1
{
Linia();
break;
}
default
{
cout &lt&lt "Blad!" &lt&lt endl;
break;
}
}

Nie sprawdzalem czy dziala, ale powinienes zrozumiec gdzie byl blad.
Nie rozumiem jeszcze jednej rzeczy w void linia. Za co odpowiada zmienna znak? Wygląda na nazwe pliku, ale nie jest jej przypisana zadna wartosc. (nigdy nie uzywalem cin.getline wiec nie wiem co to jest i moglem cos pokrecic).

0

niestety nie masz racji, konstrukcja switch jest prawidlowa, ten zapis ktory podales jest niewlasciwy i spowoduje blad w kompilacji

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0