Toon posts:

[Newbie C] Wat is hier fout aan?

Pagina: 1
Acties:
  • 133 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int x;

main()
{
       printf("Hoeveel is 3 + 5: ");
       scanf("%d", &x);
       if (x == 8)
          printf("GOED!");
       if (x > 8)
          printf("FOUT!");
       if (x < 8)
          printf("FOUT!");
       system("PAUSE");
       return 0;
}

Er is iets met system("PAUSE");... Als ik die weghaal werkt het ook wel, maar dan zie ik dus niets.

Verwijderd

Om het programma te pauseren zou ik in dit geval even een getch() invoeren...

edit: wel ff conio.h includen

edit2: dit werkt bij mij wel op een Win98-doos.
code:
1
2
3
4
5
6
7
8
9
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
   system("dir");
   system("pause");
   return 0;
}

  • whoami
  • Registratie: December 2000
  • Laatst online: 08:43
Wat is je probleem eigenlijk?
Weet je wel wat die 'system("PAUSE")' doet?

https://fgheysels.github.io/


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:54
Werk je wel onder DOS?

Sowieso is het netter om platformonafhankelijke code te schrijven in C, dus dan kun je inderdaad beter getch() ofzo gebruiken.

Liefst natuurlijk helemaal niet doen en 't programma gewoon op de prompt uitvoeren, of je IDE laten pauseren. Meestal is dat wel in te stellen (maar nogmaals, je verteld niets over je werkomgeving).

  • lonkhuijzen
  • Registratie: December 2001
  • Nu online

lonkhuijzen

100% ADH

Zo is ie ietsje netter denk ik
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
int x;

main()
{
       printf("Hoeveel is 3 + 5: ");
       scanf("%d", &x);
       if (x == 8)
          printf("GOED!");
       if (x != 8)
          printf("FOUT!");
       getch();
       return 0;
}

5,85kWp 15x Sunpower Max3 390Wp OZO | live PV output | LabelA@‘78


Verwijderd

Topicstarter
Op maandag 17 juni 2002 13:21 schreef whoami het volgende:
Wat is je probleem eigenlijk?
Weet je wel wat die 'system("PAUSE")' doet?
Ja...

Ok thnx mensen, dat stond niet in de tutorial. :o

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:54
Op maandag 17 juni 2002 13:24 schreef Pluk het volgende:
Zo is ie ietsje netter denk ik
Jawel, maar dat werkt nog steeds niet, lijkt me. getch() zal immers de overgebleven newline pakken en dus niet pauseren (zoals de bedoeling was).

Bovendien is conio niet portable.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

flush(); voor de getch()?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Ok, heb ff lopen klooien en ben er nu achter dat als ik #include <stdlib.h> erbij gooi hij het gewoon doet zoals ik hierboven beschreef.

Maar waarom mag ik geen system("PAUSE"); gebruiken? Iemand zei iets over dat het alleen werkt op Windows of zo?

  • PipoDeClown
  • Registratie: September 2000
  • Niet online

PipoDeClown

Izze Zimpell

Op maandag 17 juni 2002 13:28 schreef D2k het volgende:
flush(); voor de getch()?
met djgpp moet je wel even een newline of flush geven

God weet alles, want hij is lid van de Mosad. To protect your freedom i will take that away from you. Mijn drankgebruik heeft ernstig te lijden onder mijn gezondheid.


  • PipoDeClown
  • Registratie: September 2000
  • Niet online

PipoDeClown

Izze Zimpell

Op maandag 17 juni 2002 13:39 schreef 007 het volgende:
Ok, heb ff lopen klooien en ben er nu achter dat als ik #include <stdlib.h> erbij gooi hij het gewoon doet zoals ik hierboven beschreef.

Maar waarom mag ik geen system("PAUSE"); gebruiken? Iemand zei iets over dat het alleen werkt op Windows of zo?
beetje erg lompe (grote/omslachtige) oplossing om een pause in te lassen.

God weet alles, want hij is lid van de Mosad. To protect your freedom i will take that away from you. Mijn drankgebruik heeft ernstig te lijden onder mijn gezondheid.


  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:04

The End

!Beginning

Op maandag 17 juni 2002 13:24 schreef Pluk het volgende:
Zo is ie ietsje netter denk ik
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
int x;

main()
{
       printf("Hoeveel is 3 + 5: ");
       scanf("%d", &x);
       if (x == 8)
          printf("GOED!");
       if (x != 8)
          printf("FOUT!");
       getch();
       return 0;
}
Ik denk dat het zo netter is: :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>

int main()
{
   int x = 0;
   printf("Hoeveel is 3 + 5: ");
   scanf("%d", &x);
   if (x == 8)
    printf("GOED!");
   else
    printf("FOUT!");
   getch();
   return 0;
}

edit:
LOL, moest natuurlijk 'int main()' zijn.

  • Wortelpudding
  • Registratie: Februari 2002
  • Niet online
Dit kan ook:
code:
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>

main()
{
   int x = 0;
   printf("Hoeveel is 3 + 5: ");
   scanf("%d", &x);
   printf((x == 8) ? "GOED!" : "FOUT!");
   getch();
   return 0;
}

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:17

Creepy

Tactical Espionage Splatterer

Op maandag 17 juni 2002 14:02 schreef MrHuge het volgende:
Dit kan ook:
code:
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>

main()
{
   int x = 0;
   printf("Hoeveel is 3 + 5: ");
   scanf("%d", &x);
   printf((x == 8) ? "GOED!" : "FOUT!");
   getch();
   return 0;
}
Jep.. maar daar ging het hier niet om, en je vergeet de flush dus..

* Creepy wacht de switch (x).. case 8: ... af :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Op maandag 17 juni 2002 13:21 schreef Soultaker het volgende:
Sowieso is het netter om platformonafhankelijke code te schrijven in C, dus dan kun je inderdaad beter getch() ofzo gebruiken.
Dat schrijf je toch niet, want onder DOS/Windows heet dat ding getch() en in unix/linux getchar(). ;).

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:54
Op maandag 17 juni 2002 14:45 schreef beelzebubu het volgende:
Dat schrijf je toch niet, want onder DOS/Windows heet dat ding getch() en in unix/linux getchar(). ;).
Sorry! Ik zei ook 'ofzo'. Natuurlijk is de geschikte procedure om even in de man-pages te kijken. In de standaard library zitten trouwens zowel getchar() als (f)getc(FILE*), dus dat zou portable moeten zijn.

  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:04

The End

!Beginning

Soultaker: Waarom moet het zo nodig platform onafhankelijk zijn? Dat maakt alles alleen maar moeilijker.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 17 juni 2002 15:15 schreef Soultaker het volgende:

[..]

Sorry! Ik zei ook 'ofzo'. Natuurlijk is de geschikte procedure om even in de man-pages te kijken. In de standaard library zitten trouwens zowel getchar() als (f)getc(FILE*), dus dat zou portable moeten zijn.
het lullige van die 2 functies is dat hij wacht totdat je op enter hebt gedrukt

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op maandag 17 juni 2002 15:43 schreef The End het volgende:
Soultaker: Waarom moet het zo nodig platform onafhankelijk zijn? Dat maakt alles alleen maar moeilijker.
Pak een boek en ga lezen! :P.

Ik bedoel, je schrijft nu windows software en moet dus toch al die onzin over 5 jaar naar linux porten als windows niet meer is. Dan kun je net zo goed een goed begin maken. :P. Kun je namelijk over vijf jaar meer GoT'ten onder het motto 'ja ik ben bezig te porten naar linux'. :P.

O-). >:). :P.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

lol, dat wordt dan iets in de trand van:
hier is mijn source, hoe moet ik dit porten?
code:
1
.. ongelooflijke lap code ..
:Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:04

The End

!Beginning

Op maandag 17 juni 2002 15:54 schreef .oisyn het volgende:
lol, dat wordt dan iets in de trand van:
[..]

:Y)
Hehe, dan wordt er in de FAQ opgenomen: "Geen portrequests".

[weer serieus:]
Over het algemeen krijg je bij portable code een hele lijst met Preprocessor Directives. Eigenlijk komt het erop neer dat je alles 2 keer moet schrijven. (Bij dit kleine progje niet nee).
Dus ik zie niet in waarom je je dit moet aanleren?

Verwijderd

Op maandag 17 juni 2002 15:57 schreef The End het volgende:
Hehe, dan wordt er in de FAQ opgenomen: "Geen portrequests".
Ach, ik ben duur, maar niet onbetaalbaar... >:).
Over het algemeen krijg je bij portable code een hele lijst met Preprocessor Directives. Eigenlijk komt het erop neer dat je alles 2 keer moet schrijven. (Bij dit kleine progje niet nee).
Dus ik zie niet in waarom je je dit moet aanleren?
Valt mee...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static __inlined__ char
my_getch (void)
{
#if defined(__unix__)
  return getchar();
#elif defined(__windows__)
  return getch();
#else
#error "Dit gaat niet werken! PANIC!!!!
#endif
}

int
main (int   argc,
    char *argv[])
{
[..]
  my_getch();
}

In grotere projecten is het niet ongewoon om je eigen wrappers voor systeemfuncties te maken. Dit vergemakkelijkt portability, maar het zorgt er ook voor dat het gehele programma uniforme functies voor dit soort functies gebruikt.

Verwijderd

Op maandag 17 juni 2002 15:57 schreef The End het volgende:
Dus ik zie niet in waarom je je dit moet aanleren?
Zodat arme windows-users ook de beschikking hebben over (jouw) puike software >:) Stel je voor waar al die PHP-hakkers nu zouden zijn als Apache niet portable was...

  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:04

The End

!Beginning

Op maandag 17 juni 2002 16:03 schreef beelzebubu een stukje tekst.
Bij functies die jij beschrijft is dat niet zo'n probleem. Ik doel meer op de GUI van je applicatie. De code daarvoor is over het algemeen veel omvangrijker, dan de code die het eigenlijke werk doet.
Laat nu juist dat niet echt portable zijn..

Verwijderd

Op maandag 17 juni 2002 16:31 schreef The End het volgende:
Bij functies die jij beschrijft is dat niet zo'n probleem. Ik doel meer op de GUI van je applicatie. De code daarvoor is over het algemeen veel omvangrijker, dan de code die het eigenlijke werk doet.
Laat nu juist dat niet echt portable zijn..
Wxwindows, Qt, Gtk+...

Allemaal portable toolkits. Ik zie het probleem dus niet. :z.

  • The End
  • Registratie: Maart 2000
  • Laatst online: 07:04

The End

!Beginning

Op maandag 17 juni 2002 16:36 schreef beelzebubu het volgende:

[..]

Wxwindows, Qt, Gtk+...

Allemaal portable toolkits. Ik zie het probleem dus niet. :z.
hmm, dat wist ik niet...

Maar... >:) Heb je naar de screenshots gekeken? Ik wil graag dat mijn windows meer dan 16 kleuren gebruiken.
In de FAQ staat dat als je VC6 gebruikt dat ie dan soms kan crashen.. Da's niet echt acceptabel. (Ik zeg niks over het feit dat ze VC5/6 daar de schuld van geven :) ).
Al met al zou het mij veel meer tijd kosten om alles aan te passen, zodat het ook op Linux/Unix werkt. Waarom moeilijk doen; alleen Windows gebruikers zullen mij betalen voor de software...

Verwijderd

Op maandag 17 juni 2002 16:44 schreef The End het volgende:
Maar... >:) Heb je naar de screenshots gekeken? Ik wil graag dat mijn windows meer dan 16 kleuren gebruiken.
wxwindows is nogal lelijk ja. Maar gtk+ is gruwelijk mooi (gtk+-2.0 al gezien? :9~). Qt is ook niet lelijk. Bovendien zijn ze 100% themeable, dus je kan uiterlijk volledig aanpassen naar eigen smaak.
edit:
en 16-kleuren is dus niet zo. ;).
Al met al zou het mij veel meer tijd kosten om alles aan te passen, zodat het ook op Linux/Unix werkt. Waarom moeilijk doen; alleen Windows gebruikers zullen mij betalen voor de software...
Kijk, als je enige publiek windows is heb je er niet veel voordeel van. Maar als opera zijnde (bv.) wil je cross-platform zijn. Daarom is opera in Qt geschreven. :). En als je dus een zinnige tool schrijft waar mensen op meerdere platformen iets aan hebben, is Gtk+/Qt een enorm makkelijke manier om meer platformen zeer simpel te bereiken. Java kan ook, maar java's UI vind ik persoonlijk weer minder...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 17 juni 2002 16:03 schreef beelzebubu het volgende:
Valt mee...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static __inlined__ char
my_getch (void)
{
#if defined(__unix__)
  return getchar();
#elif defined(__windows__)
  return getch();
#else
#error "Dit gaat niet werken! PANIC!!!!
#endif
}

int
main (int   argc,
    char *argv[])
{
[..]
  my_getch();
}
kun je net zo goed gewoon getchar () gebruiken, want dat is ANSI C :)
(maar dan zit je dus weer met het feit dat je op een enter wacht)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Jongens... Mijn probleem is al opgelost hoor. :) Weet iemand trouwens een leuke tutorial over het proggen van de GUI want ik heb nu wel genoeg van die suffe rekenprogramma's.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 07:54
Op maandag 17 juni 2002 19:51 schreef 007 het volgende:
Weet iemand trouwens een leuke tutorial over het proggen van de GUI want ik heb nu wel genoeg van die suffe rekenprogramma's.
Zie drie posts naar boven.

Verwijderd

Op maandag 17 juni 2002 19:51 schreef 007 het volgende:
Jongens... Mijn probleem is al opgelost hoor. :) Weet iemand trouwens een leuke tutorial over het proggen van de GUI want ik heb nu wel genoeg van die suffe rekenprogramma's.
Hangt er dus vnaaf welke toolkit je wilt gebruiken. Qt is overigens closed-source (voor windows), wxwindows is lelijk, Gtk+ is wel gruwelijk mooi (persoonlijke mening ;)). Je kan ook gewoon WIN32's API gebruiken voor de GUI.

Elk heeft zijn eigen tutorial. Voor de Gtk tutorial, zie http://www.gtk.org/tutorial/, al weet ik niet of die ook 100% hetzelfde is voor windows (de tutorial is op linux gericht).
Pagina: 1