Gjest Slettet+45613274 Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 Heisann, Sliter med en kode som ikke gjør det jeg vil (den kompilerer): if(scanf("%d %d %d %d", &matrise[k][0],&matrise[k][1],&matrise[k][2],&matrise[k][3]) != 4) { printf("Du må skrive 4 tall separert med mellomrom\n"); return EXIT_FAILURE; Målet er altså at user skal gi 4 tall separert med mellomromstasten og så trykke enter. Om input er feil (færre tall, flere tall, char osv.) skal man gå i if-loopen. Uansett hva jeg prøver så går den enten alltid i if-loopen eller aldri... k i matrisen kommer fra en annen variabel i en for-statement, men jeg ønsker ikke å vise hele koden, av åpenbare grunner... --hjelp Lenke til kommentar
Hårek Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 Hvis jeg ikke husker feil så kan du ikke bruke scanf til å lese en 'setning'. scanf stopper på første whitespace. Bruk heller fgets til å lese inn, og så parser du input etterpå. Lenke til kommentar
Gjest Slettet+45613274 Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 Hvis jeg ikke husker feil så kan du ikke bruke scanf til å lese en 'setning'. scanf stopper på første whitespace. Bruk heller fgets til å lese inn, og så parser du input etterpå. Takk for svar. Men slik jeg har skjønt det skal man bruke fgets når man har strings. Scanf fungerer fint med ints, se her f.eks. https://stackoverflow.com/questions/1412513/getting-multiple-values-with-scanf Problemet er at jeg egentlig ikke forstår helt hvordan if statementet blir interpretert av kompilatoren. Derfor mistenker jeg at det er der feilen ligger. Lenke til kommentar
Emancipate Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 (endret) Print ut resultatet av scanf direkte for å se hva det er for forskjellige input. Endret 21. oktober 2017 av Emancipate Lenke til kommentar
Hårek Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 Og se hvilken returverdi du får fra scanf. Lenke til kommentar
Emancipate Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 (endret) Det var det jeg mente. Endret 21. oktober 2017 av Emancipate Lenke til kommentar
Gjest Slettet+45613274 Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 Print ut resultatet av scanf direkte for å se hva det er for forskjellige input. Problemet er at om jeg skriver ett tall og trykker enter så venter scanf bare på neste verdi så f.eks jeg skriver: 1 2 3 4 1 2 3 4 Så printer den: (som er korrekt!) 1 2 3 4 1 2 3 4 Samme om jeg skriver dette: 1 2 3 4 1 2 3 4 Så printer den: (Også korrekt!) 1 2 3 4 1 2 3 4 Poenget er at den skal gi feil i første eksempelet. Noe den ikke gjør. Lenke til kommentar
Emancipate Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 Poenget er at den skal gi feil i første eksempelet. Noe den ikke gjør. Da må du nok bruke en annen funksjon for å lese inn strengen. Lenke til kommentar
Gjest Slettet+45613274 Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 Poenget er at den skal gi feil i første eksempelet. Noe den ikke gjør. Da må du nok bruke en annen funksjon for å lese inn strengen. Da tenker du på fgets eller? Finnes det andre? Er relativt ny på dette. Lenke til kommentar
Emancipate Skrevet 21. oktober 2017 Del Skrevet 21. oktober 2017 (endret) Ja, den ser bra ut. Den stopper å lese ved newline. (https://www.tutorialspoint.com/c_standard_library/c_function_fgets.htm) Du utsetter imidlertid en del av problemet til senere. Endret 21. oktober 2017 av Emancipate Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå