Newsgroup: it.comp.lang.c
Titolo: Programma che si chiude troppo presto

Ciao! Ho un problema da principiante del C.
Dopo aver compilato un programma con Dev-c++, del tipo:
#include<stdio.h>
main ()
{int a;
scanf ("%d", &a);
if(a>4)
printf("il num e' mag di 4\n");
else
printf("il numero e' min di 4\n");
}
Mi fa eseguire il programma ma si chiude immediatamente dopo aver acquisito
il valore di "a", senza farmi visualizzare il risultato di printf.
Come mai? C'è un modo per lasciare sulla shell l'eseguito?
Confido in qualche aiuto!
Grazie
Gabri

 Grazie
Non centra essere o meno principianti!!
Se esegui il programma già in una shell aperta, vedrai stampata la 
printf() e il prompt sarà già pronto per immetere nuovi comandi.
Se la shell viene eseguita "in dinamico" ad esempio dall'IDE è normale
che si chiuda in quanto non è presente un qualsiasi tipo di attesa
dopo la stampa della printf()!!!



Dopo l'ultima istruzione, scrivi system("pause");
Francesco
-- 
      Teaching OnLine 
Corsi online di programmazione
Php, Asp, C, C++, Visual Basic, Delphi
Linux Shell Programming
------------------------------------
http://www.teachingonline.it

 
Aggiungi (sotto Win):
#include <stdlib.h>
e nel main alla fine (di regola subito prima del return):
system("pause");
Cosě:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
	int a;
	scanf ("%d", &a);
	if(a>4)
		printf("il num e' mag di 4\n");
	else
		printf("il numero e' min di 4\n");
	system("pause");
	return 0;
}

 Francesco
"Will" ha scritto nel messaggio


Il Mon, 24 Apr 2006 16:42:10 +0200, Gabri ha scritto:

aggiungi un getchar();
E lascia perdere i vari tizi che ti dicono di usare la system("pause");
quel tipo di chiamata è solo deleteria per chi impara a programmare.
ciao.

 quel tipo di chiamata è solo deleteria per chi impara a programmare.
E perchè mai? È solo un piccolo trucco per ovviare ad un comportamento 
della shell di Win. Non vedo dove sia il deleterio!
Tra l'altro l'utilizzo di System("pause"); è necessario (o diciamo 
utile) solo in Win, in Linux non è richiesto.

 utile) solo in Win, in Linux non è richiesto.
Utile, forse. Necessario no di sicuro.
Quell'istruzione NON deve fare parte del programma.
Il programma gira, crea un output e termina. Questo è GIUSTO.
Se vuoi che il sistema operativo ti faccia vedere l'output, allora 
agisci a livello di sistema operativo.
Lancia la console e DA QUESTA lancia il programma.
Oppure configura windows per non chiudere la console quando ha terminato 
l'esecuzione.

 l'esecuzione.
Intanto grazie delle successive specificazioni. Le terrò pronte anch'io per
quando (e se) saprò districarmi meglio ;).
Questa cosa però mi ha incuriosito. Esiste un modo per configurare windows a
non chiudere la finestra quando ha terminato l'esecuzione del programma?
Intanto ho risolto anche facendo partire da dos i file compilati. Penso sia
un buon modo anche quello per ovviare al problema.
Grazie
Gabri

 un buon modo anche quello per ovviare al problema.
Piu' che buon modo direi che dovrebbe essere la prassi. Se fai un
programma che gira da console, perche' lo vuoi lanciare da windows?
-- 
Hi, I'm a .signature virus! Copy me to your .signature file and
help me propagate, thanks!

Il fatto che mi si chiudeva è stato proprio risolto dal consiglio che mi
avete dato di lanciarli dal promt dei comandi dos. Poterli provare
direttamente da windows mi sembrava solo potesse risparmiarmi diciamo
"tempo". Nient'altro. Cmq, poichè non so come settare win a riguardo, sono
già contento che bene anche dal promt!
Grazie
Gabri
"Newbie"  ha scritto nel messaggio
