View Full Version : Sono all' inizio, help poco tecnico...
Grazie a tutti, ora partiamo con le domandine...
Con Dev C++ creo un nuovo file sorgente in c, scrivo il programma e lo compilo. Quando vado a cliccare sull' exe si apre un promt di dos che si richiude in un nanosecondo, cosa non funziona? :confused:
Il programma è il classico welcome to c per intenderci :D
Come si fanno a scrivere le parentesi graffe ? :help::fagiano:
end.is.forever
03-01-2005, 21:06
Il motivo per cui il programma ti si chiude velocemente è dovuto al fatto che ogni istruzione che tu hai scritto nel tuo sorgente viene eseguita, e quando ogni istruzione nella funzione main è stata eseguita (e quindi esce dalla funzione main) il programma finisce.
In windows le finestre di dos vengono aperte solo quando un programma dos viene avviato e si chiudono non appena il programma termina, cioè appena ha finito di eseguire tutte le istruzioni contenute nell'eseguibile.
Allora tu se vuoi leggere quello che è stato scritto nella finestra hai bisogno di tenere aperto il programma, cioè non farlo finire finchè non vuoi tu (utente).
La cosa più semplice che puoi fare è usare la funzione system dando come argomento la stringa "pause"; system è una funzione che esegue molte delle operazioni di dos (tra cui appunto mettere in pausa l'esecuzione fino a quando non viene premuto un tasto).
Devi anche includere l'header stdlib.h, in cui si trova la dichiarazione di quella funzione; quindi ricapitolando:
#include <stdlib.h>
...il tuo programma uguale a come era prima fino alla fine di main dove aggiungi:
system( "pause" );
Per fare le graffe devi usare ALT+123 e ALT+125.
Ziosilvio
03-01-2005, 23:29
Sotto Windows puoi fare le parentesi graffe premendo AltGr + Shift + la parentesi quadra corrispondente.
Per sospendere l'esecuzione di un programma, oltre a:
system("pause");
potresti usare:
getch();
Nessuno di questi due metodi è portabile, per il primo devi includere stdlib.h, per il secondo conio.h.
Un metodo che funziona sempre e usa solo le funzioni C standard è:
while (getchar() != '\n')
;
l'avrò postato una mezza dozzina di volte :grrr: e se fai una ricerchina, forse in uno dei post ho anche spiegato perché funziona.
scusa. Credevo che la ricerca fosse ancora disabilitata. :nera: :ops:
Ora vado a fare un pò di prove e cerco i tuoi post. Avevo già provato alt+123 ma non funziona, l'avevo trovata con san google. :)
Ho fatto come diceva ziosilvio per mantenere il programma conforme allo standard. Negli altri post che ho trovato non c'era spiegato il perchè funziona, me lo spieghi ora, grazie ;) Forse bisognerebbe aggiungerlo nella sezione delle FAQ.
Ziosilvio
04-01-2005, 09:43
Originariamente inviato da Vash88
Negli altri post che ho trovato non c'era spiegato il perchè funziona, me lo spieghi ora, grazie ;)
Allora: per default, in C l'input da tastiera è bufferizzato, cioè i caratteri inseriti vengono messi in una regione della memoria (il buffer) finché non viene premuto il tasto Invio. Quando ciò accade, il carattere '\n' (newline) viene inserito nel buffer e subito dopo questo viene "svuotato" sequenzialmente dalla funzione di input --- che può essere getchar, scanf, o altro.
Ora, getchar prende un carattere alla volta dallo standard input: se imponi il confronto con il newline, la bufferizzazione ti garantisce che il programma non farà niente finché tu non inserirai una sequenza di caratteri e premerai Invio. Finché getchar legge caratteri diversi dal newline, la condizione del while farà eseguire un ciclo in cui non si fa niente (quel punto e virgola da solo subito dopo il while è l'istruzione vuota); una volta letto il newline, il while si interromperà e l'istruzione successiva (ad esempio, "return 0;") verrà eseguita.
Grazie ancora, in un altro programma ho usato lo stesso ragionamento usando
if (getchar() == '\n');
per mantenerlo aperto fino a quando non viene premuto invio, ma volevo fare in modo che esca una schermata di questo tipo
Do you want to quit? y/n
e con y chiudesse il programma mentre con n no
VegetaSSJ5
08-01-2005, 11:18
prova un po' a ragionare per vedere come si fa...;)
#include <stdio.h>
int main()
{
int intero1
int intero2
int somma
printf ("Inserisci il primo intero\n");
scanf ("%d", &intero1);
printf ("Inserisci il secondo intero\n");
scanf ("%d", &intero2);
somma = intero1 + intero2;
printf ("Risultato: %d\n", somma);
printf ("Vuoi uscire y/n?\n");
if (getchar() != '\n')
;
while (getchar() != 'y')
;
return 0;
}
Guarda che ore erano :sofico:
Una altra cosa, esiste un sito dove posso trovare tutte le varie combinazioni di tasti per i caratteri speciali?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.