Avatar billede kebee Nybegynder
06. februar 2006 - 08:42 Der er 2 kommentarer

hvad er fflush

Jeg har har prøvet forskellige måder at læse fra stdin. Denne måde som står nedenunder opfører sig lidt underligt. Den springer simpelthen den sidste getchar() over. Jeg har fået at vide at man skal flushe en buffer med fflush. Men ved ikke helt hvordan. Jeg har prøvet at indsætte fflush(stdin) efter den første getchar men det hjalp ikke. Hvordan skal denne fflush bruges i dette tifælde?

int cPrioritet;
int intTilstand;
char cCpr[10];

int main()
{
gets(cCpr);
cPrioritet = getchar();
intTilstand = getchar();
printf("%s %c %c ", cCpr, cPrioritet , intTilstand);

return 0;

}
Avatar billede stringbuffer Nybegynder
01. februar 2008 - 22:32 #1
Forklaring: getchar() henter kun ét tegn, og når man taster et bogstav og trykker "Enter" så bliver der smidt to tegn ind ad stdin. Så begge dine getchar() virker, den sidste henter bare et linieskift.

Nemmeste løsning: brug scanf() eller fscanf(). Eksempel:

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

int main(void)
{
    char str[10];
    char a, b;

    fscanf(stdin, "%s %c %c", str, &a, &b);

    printf("%s %c %c\n", str, a, b);

    return EXIT_SUCCESS;
}
Avatar billede stringbuffer Nybegynder
01. februar 2008 - 22:32 #2
Det var forresten et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester