Avatar billede darkspace Nybegynder
21. april 2009 - 19:40 Der er 3 kommentarer og
1 løsning

fejl med gcc compiler

<b>Jeg har et problem med gcc.</b>

Når jeg har compilet mit lille program, så virker det fint. Men når jeg så prøver det af, og taster mere end et tegn ind og trykker enter hopper den ud af while løkken.

Er det mig eller er det gcc der ikke kan hitte ud af det?

<b>Jeg har prøvet med:</b>
cygdrive - gcc 3.4.4
Ubuntu - gcc 4.3.2
Alle med sammen fejl.


#include <stdio.h>

int main()
{

    int i, v = 1, input[2];

while(v == 1){

    for(i = 0; (input[i] = getchar()) != '\n'; i++);

    if(input[1] == '\n'){

        if(input[0] == '1'){
        printf("%s\n", "Du trykket 1");
        }

        else if(input[0] == '2'){
        printf("%s\n", "Du trykket 2");
        }

        else if(input[0] == 'e' || input[0] == 'E'){
        printf("%s\n", "Du trykket e/E for exit");
        v = 0;
        }

        else {
        printf("%s\n", "Du skal trykke 1 eller 2!");
        }

    } else {
        printf("%s\n", "Du skal trykke 1 eller 2!");
    }

}

  return 0;
}
Avatar billede bertelbrander Novice
21. april 2009 - 19:57 #1
Du har input[2], dvs der er plads til ét tegn + '\n', hvis brugeren taster mere, sker der mærkelige ting. Så i din for-sætning skal du nok have en betingelse på.

Måske var det smartere at bruge fgets?
Avatar billede darkspace Nybegynder
21. april 2009 - 21:40 #2
Hej Bertelbrander

Tak for dit svar.
Det er jo logisk :)

Jeg har ændre lidt på min for-sætning:

for(i = 0; i <= MAX-1 && (input[i] = getchar()) != '\n'; i++);

Hvordan giver man point?
Avatar billede bertelbrander Novice
23. april 2009 - 00:22 #3
Normalt ville der være lagt et svar som du kunne acceptere. Men jeg samler ikke på point, så jeg laver kun "kommentarer". Hvis ikke der er et svar som du kan acceptere, kan du også bede én om at lave et svar.
Men i dette tilfælde kan du selv oprette et svar og så acceptere det, så bliver spørgsmålet markeret som lukket og du får dine point tilbage.
Avatar billede darkspace Nybegynder
23. april 2009 - 09:51 #4
Det gør jeg :D
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