Entra

View Full Version : COde blocks Il programma termina subito


maksimon
10-07-2013, 14:31
Ho creato un programma che apre un file e ne legge i contenuti e li modifica.

Facendo il debug mi da che è tutto ok, ma se lo faccio partire il prompt mi da il tempo di apertura del programma e mi fa solo uscire.
Ho pensato che fosse il mio programma ad avere problemi allora ne ho copiato uno dove si creava un file e lo si compilava. anche qui debug ok, ma il programma termina subito.

Il file preso dal libro è questo:

#include <stdio.h>
#include <stdlib.h>
#define MAX 100

struct clientData {
int acctNum;
char lastName[20];
char firstName[20];
double bilancio;
}clienti = {0, "", "", 0.0};

FILE *fPtr;

int main()
{
int i;

if((fPtr = fopen("credit.dat", "w")) == NULL)
printf("Non è stato possibile aprire alcun file, ne verrà creato uno");
else{
for(i = 1; i <= MAX; i++)
fwrite(&clienti, sizeof(struct clientData), 1, fPtr);
}
fclose(fPtr);
return 0;
}

So che "w" apre il file in scrittura e se non esiste lo crea. Allora perché chiudere il programma?
Dov'è che sbaglio?

wingman87
10-07-2013, 14:47
Non sbagli nulla, semplicemente quando il programma termina si chiude.
Per non farlo chiudere puoi aggiungere un'istruzione in fondo che lo metta in attesa, ad esempio scanf.
Oppure puoi aprire una shell ed eseguire da lì il programma, in questo modo la shell resta aperta e ti permette di vedere gli output.

maksimon
12-07-2013, 14:07
Non sbagli nulla, semplicemente quando il programma termina si chiude.
Per non farlo chiudere puoi aggiungere un'istruzione in fondo che lo metta in attesa, ad esempio scanf.
Oppure puoi aprire una shell ed eseguire da lì il programma, in questo modo la shell resta aperta e ti permette di vedere gli output.

si, in effetti ho visto solo ora che non ci sono output su schermo quindi non si vede nulla. come faccio ad aprire una shell?

The_ouroboros
12-07-2013, 14:39
si, in effetti ho visto solo ora che non ci sono output su schermo quindi non si vede nulla. come faccio ad aprire una shell?

tasto windows - Esegui... - digita cmd:D

Spe!
12-07-2013, 14:46
si, in effetti ho visto solo ora che non ci sono output su schermo quindi non si vede nulla. come faccio ad aprire una shell?

Se sei su Windows basta che apri la command line o prompt dei comandi dal menù Start.
Se sei su Mac o Linux usi il Terminale.

Oppure puoi aggiungere alla fine del programma l'istruzione getchar(); o scanf("%*c)"; che si aspettano entrambe un carattere per continuare.