Archief - [C] één karakter inlezen met getchar()

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Shinma

Legacy Member
Goedenavond,

Ik zit met volgend probleem in dit klein fragmentje code.

Code:
char letter;
int pogingen = 10;

while ( pogingen > 0 ) {
	printf ("\n\nDoe een poging: ");
	letter = getchar();
	pogingen--;
}

Wanneer ik dit draai krijg ik aanvankelijk de tekst "Doe een poging: " en vraagt de computer mij om een teken in te geven. Wanneer ik dat teken bevestig krijg ik bij alle volgende printf 'en die zin tweemaal. Ter illustratie:

Doe een poging:
Doe een poging:

en wacht ie op mijn invoer. Ook is mijn variabele pogingen al met twee afgenomen. Ik begrijp niet goed waarom hij dat doet.

Ik vermoed eigenlijk een probleem met die getchar(). Ik las dat je tekens liever inleest met getchar dan met een scanf() maar met scanf vertoond hij net hetzelfde probleem.

Tyfius

Legacy Member
Het probleem is dat getchar() alle buffer input uitleest, dus ook uw druk op de ENTER key. Als snelle oplossing wordt meestal het volgende toegepast:
Code:
letter = getchar();
getchar(); // Read enter key

Shinma

Legacy Member
fantastisch. Nu doet hij wat ik in gedachten had. Dankuwel Tyfius. Het kan blijkbaar zo eenvoudig zijn.

Is dit met scanf() ook de oorzaak of heeft dat een andere reden. Met die functie doet hij helemaal gek :oink: Maar ja, al meerdere die af raden dat te gebruiken voor een letter in te lezen.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan