PDA

View Full Version : sospendere un programma finchè non premo un tasto in C


Killian
15-09-2003, 14:15
c'è una istruzione che sospende il programma finchè non premo un tasto (anche solo Invio va bene) in C?

C'è l'istruzione sleep() ma sospende per un tempo predeterminato.

cionci
15-09-2003, 16:02
#include <stdio.h>

int main()
{
printf("Premi INVIO per continuare...");
getchar();
return 0;
}

Killian
15-09-2003, 18:18
Originariamente inviato da cionci

#include <stdio.h>

int main()
{
printf("Premi INVIO per continuare...");
getchar();
return 0;
}


geniale nella sua banalità
ma getchar non fa parte della libreria string.h?

cionci
15-09-2003, 19:24
getchar nello standard ANSI è in stdio.h...

Fenomeno85
16-09-2003, 19:34
ma come mai metti return (0) nella funzione main???

comunque basta


#include <stdio.h>
#include <conio.h>

void main ()
{
getch ();
}

cionci
16-09-2003, 19:38
getch non è funzione dello standard ANSI...

Ritorno 0 perchè metto int main...il main dovrebbe sempre ritornare un intero (è il famoso errorlevel del dos)...

Fenomeno85
16-09-2003, 19:40
Originariamente inviato da cionci
getch non è funzione dello standard ANSI...

Ritorno 0 perchè metto int main...il main dovrebbe sempre ritornare un intero (è il famoso errorlevel del dos)...

ehm allora dovrei sempre far ritornare. Comunque vuol dire che sbaglio a usare getch () e a non far ritornare il valore? poi questo standar mi potresti dare qualche info?

cionci
16-09-2003, 19:44
Intanto per programmare un po' più standard bisogna cominciare a non usare compilatori C/C++ Borland...

Fenomeno85
16-09-2003, 19:58
visual studio va bene??

mjordan
17-09-2003, 00:32
Originariamente inviato da cionci
Intanto per programmare un po' più standard bisogna cominciare a non usare compilatori C/C++ Borland...

:D

mjordan
17-09-2003, 00:33
Originariamente inviato da Fenomeno85
visual studio va bene??

Perchè non ti scarichi questo?

www.mingw.org

Poi attivi il flag -ansi -pedantic e stai sicuro che tutto ciò che non è standard non lo usi perchè il compilatore lo rigetta.

lovaz
17-09-2003, 08:23
E se vuoi un ide:
http://www.bloodshed.net/devcpp.html

recoil
17-09-2003, 08:40
concordo sul fatto che è meglio attenersi agli standard quando si programma in un certo linguaggio.
in caso contrario si prendono delle "brutte abitudini" che finiscono col creare problemi quando si cambia compilatore ecc.

Killian
17-09-2003, 10:22
Originariamente inviato da cionci
Intanto per programmare un po' più standard bisogna cominciare a non usare compilatori C/C++ Borland...

io sto iniziando ad usare DJGPP con interfaccia RHIDE (non ridete che vi sento :) )

è l'unico che conosco che è gratuito.

lovaz
17-09-2003, 10:36
Prova anche devcpp

cionci
17-09-2003, 12:16
Mi ero dimenticato che se si vuole evitare che caratteri immessi (se si premono altri caratteri prima dell'invio) restino nello standard input (potrebbero influenzare una successiva chiamata a getchar) allora bisogna cancellarli dallo stdin...

#include <stdio.h>

int main()
{
printf("Premi INVIO per continuare...");
getchar();
fflush(stdin);
printf("Premi INVIO per continuare...");
getchar();
fflush(stdin);
return 0;
}

mjordan
17-09-2003, 16:48
Originariamente inviato da Killian
io sto iniziando ad usare DJGPP con interfaccia RHIDE (non ridete che vi sento :) )

è l'unico che conosco che è gratuito.

Perchè dovremmo ridere...Anzi...Quegli strumenti ti consentono di focalizzarti sul linguaggio senza stare a badare alle questioni idiosincratiche del linguaggio proprietario. Ricorda il mitico flag '-ansi -pedantic' altrimenti il compilatore potrebbe continuare ad accettare alcune estensioni GNU non propriamente standard

recoil
17-09-2003, 16:56
Originariamente inviato da mjordan
Perchè dovremmo ridere...Anzi...Quegli strumenti ti consentono di focalizzarti sul linguaggio senza stare a badare alle questioni idiosincratiche del linguaggio proprietario.

mamma mia come parli difficile :nonsifa:
il termine deriva per caso da una parola straniera?
mi pare che c'è un termine simile in italiano ma non ricordo il significato e non l'ho manco trovato sul vocabolario! :eek:

mjordan
17-09-2003, 17:55
Originariamente inviato da recoil
mamma mia come parli difficile :nonsifa:
il termine deriva per caso da una parola straniera?
mi pare che c'è un termine simile in italiano ma non ricordo il significato e non l'ho manco trovato sul vocabolario! :eek:

No, è italiano. Deriva da idiosincrasia. Ha origini greche. Significa "miscela di particolari". Nel nostro caso riferendoci ad un linguaggio "una miscela di implementazioni non standard" :D

recoil
17-09-2003, 18:04
Originariamente inviato da mjordan
No, è italiano. Deriva da idiosincrasia. Ha origini greche. Significa "miscela di particolari". Nel nostro caso riferendoci ad un linguaggio "una miscela di implementazioni non standard" :D

ecco che saltano fuori i limiti culturali di un povero ragioniere... :rolleyes:

Killian
18-09-2003, 14:08
Originariamente inviato da mjordan
Ricorda il mitico flag '-ansi -pedantic' altrimenti il compilatore potrebbe continuare ad accettare alcune estensioni GNU non propriamente standard

non ho capito, devo far partire il programma in questo modo: "rhide.exe -ansi - pedantic" oppure ti riferisci a qualcos'altro?

cionci
18-09-2003, 14:44
-ansi -pedantic sono i parametri da passare al GCC...

Killian
18-09-2003, 15:47
Originariamente inviato da cionci
-ansi -pedantic sono i parametri da passare al GCC...

scusa l'ignoranza, ma non ho ben capito.

cionci
18-09-2003, 17:16
Sono i parametri per il compilatore... Nel tuo caso il DGJPP (che non altro che un porting per Windows del GCC)... Comunque io ti consiglio nuovamente Dev-C++ con il mingw32...DJGPP non mi è mai piaciuto...

Killian
19-09-2003, 10:15
Originariamente inviato da cionci
Sono i parametri per il compilatore... Nel tuo caso il DGJPP (che non altro che un porting per Windows del GCC)... Comunque io ti consiglio nuovamente Dev-C++ con il mingw32...DJGPP non mi è mai piaciuto...

quasi quasi lo provo (il Dev-C++) solo che sul sito ci sono 2 versioni, la 4 e la 5 beta, quale mi consigli? Anche se sarei orientato sulla 4, non mi fido troppo delle beta.

cionci
19-09-2003, 10:22
La 5 beta ed aggiorna con vUpdate appena l'hai installata...

Killian
19-09-2003, 14:16
Originariamente inviato da cionci
La 5 beta ed aggiorna con vUpdate appena l'hai installata...

ho fatto come hai detto tu e sembra davvero un buon prodotto.
mi è venuta una curiosità riferita proprio alla domanda posta da me all'inizio di questa discussione, creando un nuovo progetto, mi ha automaticamente creato il seguente codice (preciso che ho scelto un programma da console in linguaggio C)

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

int main(int argc, char *argv[])
{
printf("\nciao mondo\n");
system("PAUSE");
return 0;
}

l'unica mia aggiunta è stata il printf, ovviamente come prova. Quindi per mettere in pausa un programma si può anche usare "system("PAUSE");", oltre al getchar come mi avevi suggerito.

cionci
19-09-2003, 14:28
Certo, ma non è portabile...

Il getchar funziona, ma bisogna utilizzare alcuni accorgimenti (come vedi nel secondo codice che ho postato in quella discussione)...