Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100

    [c] lettura da file di oggetti struct

    ciao ragazzi vi dico il mio problema
    ho un file organizzato cosi
    Rossi:Mario:234445
    Bixio:Nino:435678
    Garibaldi Giuseppe 787899

    devo realizzare un programma c che mi carichi DAL FILE ogni studente in un vettore di tipo studente .
    il tipo studente è cosi definito

    codice:
    typedef struct studente {
      int matricola;
      char nome[20];
      char cognome[20];
    } studente;

    io avevo pensato a qualcosa del genere
    codice:
    
     #include<stdio.h>
    
    typedef struct studente {
      int matricola;
      char nome[20];
      char cognome[20];
    } studente;
    
    int main(){
    FILE * f;
    int i=0;
    studente v [10] ;
    f=fopen("lista","r");
    while (fscanf(f, ”"%s:%s:%d"”, v[i].nome, v[i].cognome, &v[i].matricola)==1)
    i++;
    
    }

    ma il compilatore mi da vari errori del tipo
    studenti.c14: error stray '\342' in program e altri simili

    HELP ME
    df

  2. #2

    Re: [c] lettura da file di oggetti struct

    Sbaglio o nella linea 14 (che dovrebbe essere questa, perchè potevi anche segnarla tu)
    codice:
    while (fscanf(f, ”"%s:%s:%d"”, v[i].nome, v[i].cognome, &v[i].matricola)==1)
    ci sono degli apici di troppo ?
    lolide
    Java Programmer

    Informati

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    hai ragione scusa, correggendo l errore e semplificando ulteriormente il problema,supponiamo che voglio caricare solo il primo studente nel vettore e stampare il suo contenuto il codice è
    fscanf(f, "%s:%s:%d", v[0].nome, v[0].cognome, &v[0].matricola)
    printf(" %s %s %d", v[0].nome, v[0].cognome, v[0].matricola);

    ma invece di stampare Rossi Mario 2334445 mi stampa
    Rossi:Mario:234445e altre schifezze, come mai?
    in poche parole la fscanf non formatta come si deve l input
    df

  4. #4
    Succede perchè usi una struct troppo grande.
    Cioè nome è di 20 byte, quindi fscanf copierà 20 byte in nome, altri 20 byte in cognome e 2 byte in matricola.
    fscanf fa una copia byte-byte, quindi dovresti magari riempire il resto dei byte con degli spazi fino ad arrivare a linee precise di 42 byte.
    lolide
    Java Programmer

    Informati

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    qindi una possibile sol?
    df

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.