Programma in C++ (non parte, xkè?)

di il
11 risposte

Programma in C++ (non parte, xkè?)

Qualcuno sa dirmi perchè non mi fa operare al momento dell'esecuzione? ci sono 3 warnings ma non credo siano il motivo del mio problema.
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

int main(int argc,char *argv[])
{
 /*Declarative part*/
 char label[20];
 char nome[20];
 char cognome[20];
 char matricola[7];
 char nome_esame[20];
 char string[60];
 int entries=0;
 int loop,voto;
 char file_name[20];
 FILE *fp, *fp2;

 struct Entry_struct
 {
  char nome[20];
  char cognome[20];
  char matricola[7];
  char nome_esame[20];
  int voto;
 } entry[20];
 Entry_struct entry1;
 /*end of declaration*/

 if (argc!=2) {
   printf("Uso: nome_programma nome_file\n");
   exit(1);
     }
 strcpy(file_name,argv[1]);
 /*Scrivi etichetta come stringa di 20 caratteri*/
 printf("\n\n Scrivi un'etichetta per la tabella: ");
 gets(label); //scanf("%20s",label)
 fflush(stdin);  //Scarica l'input per controllo

 /*Scrivi numero di ingressi come un intero*/
 printf("Quanti ingressi ci saranno?(meno di 20) ");
 scanf("%d",&entries);
 fflush(stdin);

 /*Scrivi un nome (solo lettere maiuscole o minuscole)*/
 for (loop=0;loop<entries;loop++)
 {loop++;
  printf("Scrivi il %d°\n",loop);
  loop--;
  printf(" NOME: ");
  scanf("%[A-Za-z]",entry[loop].nome);
  fflush(stdin);

  /*Scrivi cognome*/
  printf(" COGNOME: ");
  scanf("%[A-Za-z]",entry[loop].cognome);
  fflush(stdin);

  /*Scrivi numero matricola*/
  printf(" MATRICOLA: ");
  scanf("%7s",entry[loop].matricola);
  fflush(stdin);

  /*Scrivi nome esame*/
  printf(" NOME ESAME: ");
  scanf("%[A-Za-z]",entry[loop].nome_esame);
  fflush(stdin);

  /*Scrivi voto esame*/
  printf(" VOTO: ");
  scanf("%d",&entry[loop].voto);
  fflush(stdin);
 }

 /*Scrivi nome, cognome, matricola, nome e voto esame*/
 printf("Inserisci nome, cognome, matricola\n");
 scanf("%20s %20s %7s", nome, cognome, matricola);
 /*Apri un file di testo per scrivere dati*/
 fp=fopen(file_name,"w");
 if (!fp){printf("Impossibile aprire il file"); exit(1);}
 /*Stampo su file i dati inseriti*/
 fprintf(fp,"TABELLA %s\n",label);
 fprintf(fp,"Compilata per %s %s\nMatricola: %s\n",nome, cognome, matricola);
 fprintf(fp,"----------------------------------------------------------------\n");
 for(loop=0;loop<entries;loop++) fprintf(fp,"%d|%20s|%20s|%8s|%15s|%2d\n",
     loop+1,
     entry[loop].nome,
     entry[loop].cognome,
     entry[loop].matricola,
     entry[loop].nome_esame,
     entry[loop].voto);

fprintf(fp,"----------------------------------------------------------------\n");
/*Chiudi file dopo scrittura*/
fclose(fp);
/*Apri un file di testo per leggere dati*/
fp=fopen(file_name,"r");
if(!fp){printf("Impossibile aprire file testo"); exit(1);}
/*Scrivi su stdout i dati del file*/
while(fgets(string,79,fp)!=NULL){puts(string); getche();}
/*Chiudi il file di testo*/
fclose(fp);

/*Apri in file binario per scrivere i dati*/
fp2=fopen("dummy2.fil","wb");
if(!fp2){printf("Impossibile aprire file"); exit(1);}
for(loop=0;loop<entries;loop++)
fwrite(&entry[loop],sizeof(entry),1,fp2);
/*Chiudi il file binario*/
fclose(fp2);
/*Apri un file binario per leggere i dati*/
fp2=fopen("dummy2.fil","rb");
if(!fp2){printf("Impossibile aprire file");exit(1);}
loop=0;
/*Leggi e scrivi su stdout i dati del file*/
while(fread(&entry1,sizeof(entry),1,fp2))
{
printf("%d|%20s|%20s|%8s|%15s|%2d\n",
     loop+1,
     entry1.nome,
     entry1.cognome,
     entry1.matricola,
     entry1.nome_esame,
     entry1.voto);getche();}
/*Per vedere come funziona,vai un record indietro e stampalo*/
fseek(fp2,-sizeof(entry),SEEK_CUR);
fread(&entry1,sizeof(entry),1,fp2);
printf("%d|%20s|%20s|%8s|%15s|%2d\n",
     loop,
     entry1.nome,
     entry1.cognome,
     entry1.matricola,
     entry1.nome_esame,
     entry1.voto);getche();
/*Chiudi il file binario*/
fclose(fp2);
/*Chiudi il programma e ritorna 0*/
return 0;
}




11 Risposte

  • Re: Programma in C++ (non parte, xkè?)

    Ciao smemo90,
    cosa intendi dire con 'non mi fa operare' ? Comunque il programma esce a questo punto :
    
    	if (argc!=2) {
    		printf("Uso: nome_programma nome_file\n");
    		exit(1);
    	}
    
    se non lo richiami con dei parametri sulla riga di comando.
  • Re: Programma in C++ (non parte, xkè?)

    Tu hai provato a farlo partire? Dimmi cosa esce a te (io uso Visual Studio 6.0). Come dovrei modificare quella parte?
  • Re: Programma in C++ (non parte, xkè?)

    Se lo lanci da Visual Studio esce subito, a meno che nelle opzioni di progetto specifichi un parametro di lancio.
  • Re: Programma in C++ (non parte, xkè?)

    Si ma non mi fa operare, nel senso che mi esce la finestra con scritto:

    Uso: nome_programma nome_file
    Press any key to continue
  • Re: Programma in C++ (non parte, xkè?)

    Nel Visual Studio vai sul nome del progetto col mouse, tasto destro, poi Properties->Configuration Properties->Debugging->Command Arguments e li scrivi il parametro di avvio, ovvero il nome del file. (Uso il Visual Studio 11 ma dovrebbe essere praticamente la stessa cosa anche col 6)

    A questo punto quando lo lanci appare: 'Scrivi un' etrichetta per la tabella:'
  • Re: Programma in C++ (non parte, xkè?)

    Ho provato ma non mi esce Configuration Properties. Si può fare in un altro modo?
  • Re: Programma in C++ (non parte, xkè?)

    Da menu: Project/Properies, ti si apre un pannello e sulla sinistra dovresti avere 'Configuration Properies/Debugging'
  • Re: Programma in C++ (non parte, xkè?)

    Ora ho provato su un Visual Studio 2008,
    Da menu: Progetto/Proprieta, ti si apre un pannello e sulla sinistra dovresti avere 'Debug' lo selezioni e al centro appare 'Argomenti della riga di comando'
  • Re: Programma in C++ (non parte, xkè?)

    PERFETTO! Ti ringrazio x la tempestività ma come faccio ad ovviare questo piccolo problema?
  • Re: Programma in C++ (non parte, xkè?)

    Che problema vuoi ovviare? Se lo lanci da Visual Studio fai come abbiamo appena detto, se lo lanci da fuori scrivi il parametro sulla riga di comando (o in windows usi un link). Se invece vuoi eliminare questa caratteristica e vuoi ad esempio chiedere il nome del file all' utente sulla console, allora devi eliminare quelle righe dal codice e sostituirle con del codice apposito.
  • Re: Programma in C++ (non parte, xkè?)

    Ok ho capito, ti ringrazio ancora! Sei stato molto chiaro e disponibile!
Devi accedere o registrarti per scrivere nel forum
11 risposte