Wczytywanie różnych typów zimennych

Wczytywanie różnych typów zimennych

Wątek przeniesiony 2014-03-11 18:50 z C/C++ przez ŁF.

ZU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

witam, przepraszam, zaczalem zglebiac jezyk c i mam pewien problem. Otoz, napisalem pewien maly programik w ramach nauki, jednak mam pewien problem.

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


int a; float b; char c;

void pisz()
{
	printf("\ncos tam, cos tam\n");
}

int main(void) {
	
	
	scanf("%d", &a);
	scanf("%f", &b);
	
	printf("Mam %d lat\n", a);
	printf("%f", b);
	
	printf("\njezeli chcesz, zobaczyc napis, nacisnij 't', jezeli nie to 'n'\n");
	scanf("%c", &c);
	
	if (c=='t')
	pisz();
	else
	return 0;
}

otoz, teraz nie wczytuje mi c, dlaczego, nie wiem. Ale gdy wezme w komentarz wczytanie od a do b, wtedy wczytuje c. Czy moglby mi ktos wytlumaczyc, dlaczego tak sie dzieje? Z gory dzieki za pomoc.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
3

Bo jak wstukasz coś z klawiatury i dasz "enter" to w buforze ten enter zostaje i twój scanf na %c łapie ten enter jako wpisany znak.

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
3

Napisz tak

Kopiuj
scanf(" %c", &c);

Inaczej wczytujesz automatycznie enter z wcześniejszego wczytywania.

ZU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

dzieki wielkie Panowie

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.