BorlandC+WinXP+zawieszenie

0

Nie mam pojęcia co się dzieje, ale jak uruchamiam swój prościutki programik:
http://www.sandc.prv.pl/KALK.C
na BorlandC pod WinXP (nie wiem jak na innych jest) w trybie konwersacyjnym, to przy zamykaniu go (uruchamiając z IDE) rozwala mi cały tryb DOSa:
http://www.sandc.prv.pl/Clipboard01.gif

Co ciekawsze przy uruchamianiem spoza IDE wszystko dobrze chodzi. Czy to jest jakiś błąd w moim programie? Jakby ktoś mógł to byłbym wdzięczny za sprawdzenie działania programu (chodzi o tryb Konwersacyjny. Tryb natrulany jeszcze nie jest zakończony)

0

zaje**sty błąd , uwielbiam takie !!
też mi sie sypał tryb MS-DOS , wg mnie drań lezy tutaj ,

void Wyswietl(int L1, int L2, char op)
{
float wynik;

switch (op)
{
case '/':
{
if (L2==0)
printf("\nBĄd!\nPami©taj chlero nie dziel przez zero!!!\n");
else
wynik = (float) L1 / L2;break;
}
case '+': wynik = L1 + L2;break;
case '-': wynik = L1 - L2;break;
case '': wynik = L1 * L2;break;
case '%': wynik = L1 % L2;break;
}
printf("%g", wynik);
printf("\nNacinij dowolny klawisz");
<font size="18"><font color="red">scanf("%c%c");</span></span>
}
nie możesz czegoś takiego napisać , bo scanf oczekuje argumentów po przecinku , te argumenty mają być adresami gdzie ma zapamiętać wczytane znaki , a ze adresów nie podajesz to program wczytuje te znaki gdzieś sobie to pamięci , i to gdzieś jest tam gdzie nie powinno być . jak zastąpiłem tego scanf'a 2
getchar() to już nie było błędu . oto moja teoria

0

Dzięki. Zadziałało.
A może macie jakieś metody, żeby używając scanf od razu ściągać znak końca lini? (bo mnie to dobija).
Jest jakaś funkcja odpowiadająca pascalowemu ReadLn? (oczywiście chodzi mi o ANSI C)

0

getch() pobiera pojedyńczy znak ze stdin
a do korzystania wraz ze scanf'em zaleca sie używanie :
fflush(stdin); funkcja ta opróżnia bufor i jest wszystko oki
są co prawda strumienie ( wiem , wiem , ja tylko o strumieniach ;) ) , tam są lepsze funkcje do pobierania z klawiatury , więcej możliwości ustawień . Ale to dotyczy tylko c++
jak cie wqrza scanf ( nie tylko ciebie zapewne ) to masz do wyboru jeszcze :
gets(char *); -pobiera caly ciag znakow
getchar() - zwraca pobrany znak
getche() - chyba to samo

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