Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 36
  1. #11
    Il concetto di fondo è di contare le righe (ad esempio con fgets) e dividere per il numero di righe per record, allocare la memoria necessaria per contenere l'array di strutture (puntatore=malloc(numerorecord*sizeof(coppia))), usare rewind per ritornare all'inizio del file e quindi popolare l'array di strutture (che è la cosa più semplice, basta una normale fscanf("%hs %d %hs",&nome, &eta, &citta).
    Se hai tempo potrei scrivertelo Sabato o Domenica pomeriggio.
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #12
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    28
    Ti ringrazio io adesso provo a farlo, ma se tu mi fai la cotesia di scrivermelo ti ringrazio doppiamente.

  3. #13
    Il nome e la città sono SEMPRE composti da una sola parola (poco probabile...), o può anche contenere spazi ?
    Per intendeci del tipo :

    COPPIA:
    N1)
    ALBERTO ROSSI 24 PALERMO
    CARLA BIANCHI 28 SERRA SAN QUIRICO;

    N2)
    CICCIO BIANCHI 26 ROMA
    MARIA VERDI 28 SAN BENEDETTO;

    N3)
    CARLO VERDI 30 VILLA POTENZA
    GIUSI ROSSI 28 ROMA.

    Perchè in questi casi la fscanf("%s") non legge l'intero campo del nome o della città.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  4. #14
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    28
    Il nome e/o la città possono contenere spazi.

    Niente ho provato tutta la mattina ma non riesco a compilarlo. Qualcuno mi aiuti a compilarlo.

  5. #15
    Originariamente inviato da oiboo
    Il nome e/o la città possono contenere spazi.
    Le cose si complicano.
    Niente ho provato tutta la mattina ma non riesco a compilarlo. Qualcuno mi aiuti a compilarlo.
    Posta il codice che hai scritto finora.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #16
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    28
    Per semplificare le cose ho chiamato il prof., e mi ha detto che le indicazioni sono quelle riportate all'inizio, quindi senza spazi.

    Mi dispiace, ma non posso inviare niente perchè sono veramente in alto mare.

  7. #17
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    28
    Guarda quello che ho compilato, non capisco dove sono gli errori, potresti dargli un occhiata, Grazie:


    #include <iostream.h>
    #include <stdlib.h>
    #include <stdio.h>
    #define MAXSTR 50


    main()
    {
    typedef
    struct { char nome[MAXSTR];
    int età;
    char città[MAXSTR];
    } Coppie;

    Coppie archivio[10] =

    { {"Alberto", "24", "Palermo"},
    {"Ciccio", "26", "Roma"},
    {"Carlo", "30", "Pisa"},
    {"Carla", "28", "Roma"},
    {"Maria", "28", "Roma"},
    {"Giusi", "28", "Roma"}
    };
    int i,ncoppie=3;
    FILE *arch_file;

    arch_file = fopen("archivio_coppie","w");
    for ( i=0;i<ncoppie;i++)
    {
    fprintf(arch_file,"%s\t%d\t%s\n",archivio[i].nome,archivio[i].età,archivio[i].città);
    }
    fclose(arch_file);

    arch_file = fopen("archivio_coppie","r");
    for ( i=0;i<ncoppie;i++)
    {
    fscanf(arch_file,"%s\t%d\t%s",archivio[i].nome,archivio[i].età,archivio[i].città);
    printf("Coppia n.%d: Nome: %s, Età: %d Città: %s\n",i,archivio[i].nome,archivio[i].età,archivio[i].città);
    }
    fclose(arch_file);
    }

  8. #18
    Il tuo codice corretto (solo la sintassi).
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAXSTR 50
    
    
    int main()
    {
    	typedef struct
    	{
    		char nome[MAXSTR];
    		int  eta;
    		char citta[MAXSTR];
    	} Coppie;
     	int i,ncoppie=3;
     	FILE *arch_file;
    
     	Coppie archivio[6]=
    	{
    		{"Alberto", 24, "Palermo"},
    		{"Ciccio",  26, "Roma"},
    		{"Carlo",   30, "Pisa"},
    		{"Carla",   28, "Roma"},
    		{"Maria",   28, "Roma"},
    		{"Giusi",   28, "Roma"}
    	};
    
    	arch_file = fopen("archivio_coppie","w");
    	for ( i=0; i<ncoppie; i++)
    	{
    		fprintf(arch_file, "%s\t%d\t%s\n", archivio[i].nome, archivio[i].eta, archivio[i].citta);
    	}
    	fclose(arch_file);
    
    	arch_file = fopen("archivio_coppie","r");
    	for( i=0; i<ncoppie; i++)
    	{
    		fscanf(arch_file, "%s\t%d\t%s", archivio[i].nome, archivio[i].eta, archivio[i].citta);
    		printf("Coppia n.%d: Nome: %s, Eta: %d Citta: %s\n", i, archivio[i].nome, archivio[i].eta, archivio[i].citta);
    	}
    	fclose(arch_file);
    	return 0;
    }
    Non puoi usare i caratteri accentati (à) per le variabili ...
    Avevo capito che tu dovessi leggere i dati dal file e qui invece li scrivi... :master:
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  9. #19
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    28
    Effettivamente li devo leggere dal file, ma non lo so fare, mi compileresti il programma con le coppie da leggere da un altro file?

    Grazie

  10. #20
    Originariamente inviato da oiboo
    Effettivamente li devo leggere dal file, ma non lo so fare, mi compileresti il programma con le coppie da leggere da un altro file?

    Grazie
    La soluzione ti è stata suggerita da MItaly
    Originariamente inviato da MItaly
    Il concetto di fondo è di contare le righe (ad esempio con fgets) e dividere per il numero di righe per record, allocare la memoria necessaria per contenere l'array di strutture (puntatore=malloc(numerorecord*sizeof(coppia))), usare rewind per ritornare all'inizio del file e quindi popolare l'array di strutture (che è la cosa più semplice, basta una normale fscanf("%hs %d %hs",&nome, &eta, &citta).
    [...]
    Cioè usare la fscanf().

    Così ad esempio leggi, contemporaneamente, i dati di lui e di lei...
    codice:
    int res;
    do
    {
    	res=fscanf( fp, "%s %d %s %s %d %s", nomeLui, etaLui, cittaLui, nomeLei, etaLei, cittaLei);
    }
    while( res!=EOF ); /* Rileva la fine del file... */
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.