Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636

    creazione di una struct da file ingresso.txt

    ciao a tutti
    da un file in ingresso con dei dati vorrei leggere ogni campo ed inserirlo in una struttura per poi eleborarli (ordine crescente, alfabetico, ecc)
    il codice è questo..ho fatto una prova ma non so se funzona
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    /*
     * 
     */
    int main() {
    
    	struct studenti {
    		int ordi;
    		char cogno[20];
    		int vot;
    	}studente; 
    
        int ordine;
        char cognome[20];
        int voto;
    
    	int i;
    	int n = 10;
    
        FILE *cfPtr; /*cfPtr = punta al file ingresso.txt*/
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "w")) == NULL){
            printf ("Il file non può essere aperto");
        }
    
        else{
            printf ("Inserisci ordine, cognome, ed il voto : \n");
            printf ("Inserisci EOF per terminare l'inserimento \n");
            scanf ("%d%s%d", &ordine, cognome, &voto);
    
            /*scrive nel file*/
    
            while (!feof(stdin)){
                fprintf (cfPtr, "%d %s %d\n", ordine, cognome, voto);
                scanf ("%d%s%d", &ordine, cognome, &voto);
            }
    
             fclose(cfPtr);
    
            }
    
    
    
            
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "r")) == NULL){
            printf ("Il file non può essere aperto");
        }
        else{
            printf ("%15s%15s%15s","Ordine","Cognome","Voto\n");
            fscanf (cfPtr, "%d%s%d", &ordine, cognome, &voto);
            studente[0].ordi = ordine);
    		strcpy(studente[0].cogno,cognome);
    		studente[0].vot = voto;
    		i++;
    
        while (!feof(cfPtr)){
                printf ("%15d%15s%14d\n", ordine, cognome, voto);
                fscanf (cfPtr, "%d%s%d", &ordine, cognome, &voto);
    			
    				studente[i].ordi = ordine;
    		        strcpy(studente[i].cogno,cognome);
    		        studente[i].vot = voto;
    				i++;
    
            }
    			
        }
    
    	
    
    	
        fclose(cfPtr);
    	system("PAUSE");
    
    
    
    
        return 0;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    qualcuno sa dirmi dove sbaglio?

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non sai se funziona ... ? Non puoi essere piu' preciso ...?

    Altrimenti avrai poche risposte perche' non tutti hanno il tempo di provare il codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    esatto non so se funziona...ho provato a mettere una printf per vedere se mi stampava la struttura..ma non me lo fa..quindi nonso se funziona

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da jurij7
    esatto non so se funziona...
    Non ha molto senso scrivere del codice e poi mandarlo in un forum per far cercare agli altri gli errori ... bisogna sbatterci la testa un bel po' di tempo, facendo tutte le prove del caso, ovvero facendo un bel po' di debugging ...

    ho provato a mettere una printf per vedere se mi stampava la struttura..ma non me lo fa..
    E continua a cercare ... fai altre prove, esamina il valore delle variabili, prima e dopo le varie operazioni, rivedi tutte le righe ...

    Per cominciare, il programma non e' compilabile, perche' da' degli errori ... comincia da quelli ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    scusate sono stato sinora a cercare l'errore ma non ci sono riuscito
    ho trovato qualcosa che non andava tipo la definizione del numero di elementi della struct..ma non va uguale..ecco l'ultimo che ho fatto

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define n 10
    /*
     *
     */
    int main() {
    
    	struct studenti {
    		int ordi;
    		char cogno[20];
    		int vot;
    	}studente[n];
    
        int ordine;
        char cognome[20];
        int voto;
    
    	int i = 0;
    
    
        FILE *cfPtr; /*cfPtr = punta al file ingresso.txt*/
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "w")) == NULL){
            printf ("Il file non può essere aperto");
        }
    
        else{
            printf ("Inserisci ordine, cognome, ed il voto : \n");
            printf ("Inserisci EOF per terminare l'inserimento \n");
            scanf ("%d%s%d", &ordine, cognome, &voto);
    
            /*scrive nel file*/
    
            while (!feof(stdin)){
                fprintf (cfPtr, "%d %s %d\n", ordine, cognome, voto);
                scanf ("%d%s%d", &ordine, cognome, &voto);
            }
    
             fclose(cfPtr);
    
            }
    
    
    
    
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "r")) == NULL){
            printf ("Il file non può essere aperto");
        }
        else{
            printf ("%15s%15s%15s","Ordine","Cognome","Voto\n");
            fscanf (cfPtr, "%d%s%d", &ordine, cognome, &voto);
            studente[i].ordi = ordine;
    		strcpy(studente[i].cogno,cognome);
    		studente[i].vot = voto;
    		i++;
    
        while (!feof(cfPtr)){
                printf ("%15d%15s%14d\n", ordine, cognome, voto);
                fscanf (cfPtr, "%d%s%d", &ordine, cognome, &voto);
    
    				studente[i].ordi = ordine;
    		        strcpy(studente[i].cogno,cognome);
    		        studente[i].vot = voto;
    				i++;
          
               }
            }
    
         printf ("\nStampa ordinata\n");
        printf ("%25s%25s%30s\n","ORDINE,"COGNOME","VOTO");
         for (i = 0; i < n; i++){
             printf ("%25s%25s%30d", studente[i].ordi, studente[i].cogno, studente[i].vot);
         }
    
    
    
    
        fclose(cfPtr);
        system("PAUSE");
    
    
    
    
        return 0;
        
    }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Esiste ancora un errore di compilazione ... nella riga dove c'e'

    cantanti

    ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    si infatti...ora mi scrive (della stampa della struttura) solo le intestazioni cioè
    'stampa ordinata' e ORDINE COGNOME VOTO..ma non gli elemtni della struttura

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Mi sembra molto strano che tu abbia eseguito il programma dato che hai scritto

    studenti[i].vot

    e continua a non compilare dato che dovrebbe essere

    studente[i].vot

    E comunque la for

    for (i = 0; i <= n; i++)

    deve essere < e non <=
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    si scusa quelle le avevo gia corrette

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.