Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] interi con lo zero

  1. #1

    [C] interi con lo zero

    ciao a tutti,
    dovrei realizzare un prog che salvi in un file dei dati inseriti dall'utente, in particolare dei numeri. Il prog funziona bene, ma quando si inserisce un intero da salvare che viene preceduto da uno zero questo viene salvato nel file senza lo zero, credo perchè siccome ho usato gli interi, il C crede che lo zero che precede il numero non sia una cifra significativa e quindi lo elimina in partenza...come posso fare per salvare l'intero così come viene scritto ?

    vi posto qui il codice C che ho scritto:

    #include <stdio.h>


    struct rubrica {

    int acctNum;
    char lastName[ 15 ];
    char firstName[ 10 ];
    int numero;
    };


    int enterChoice( void );

    void aggiungi( FILE *fPtr );


    int main()
    {
    FILE *cfPtr;


    if ( ( cfPtr = fopen( "rubrica.dat", "rb+" ) ) == NULL ) {
    printf( "Errore: file non aperto!\n" );
    }
    else
    aggiungi( cfPtr );

    fclose( cfPtr );

    return 0;

    }




    void aggiungi( FILE *fPtr )
    {

    struct rubrica struttura = { 0, "", "", 0 };

    int accountNum;


    printf( "Inserisci un id per i dati da inserire ( Ex:un numero maggiore di 1 ): " );
    scanf( "%d", &accountNum );


    fseek( fPtr, ( accountNum - 1 ) * sizeof( struct rubrica ),
    SEEK_SET );


    fread( &struttura, sizeof( struct rubrica ), 1, fPtr );


    if ( struttura.acctNum != 0 ) {
    printf( "Account #%d already contains information.\n",
    struttura.acctNum );
    }
    else {


    printf( "Inserisci: Nome, Cognome, Numero di telefono:\n " );
    scanf( "%s%s%d", &struttura.lastName, &struttura.firstName,
    &struttura.numero );

    struttura.acctNum = accountNum;


    fseek( fPtr, ( struttura.acctNum - 1 ) *
    sizeof( struct rubrica ), SEEK_SET );


    fwrite( &struttura,
    sizeof( struct rubrica ), 1, fPtr );
    }

    }
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  2. #2
    prova un double
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    ma double non serve per i numeri in virgola mobile ? a me servono interi...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  4. #4
    Originariamente inviato da rocco.g
    ma double non serve per i numeri in virgola mobile ? a me servono interi...
    interesserebbe pure a me..
    che variabile in C è adatta a contenere numeri del tipo 0,1234 oppure 1,2345 ??

    ciao e grazie
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  5. #5
    beh per il tuo scopo il double va benissimo :-)

    io invece intendo numeri tipo 0256356, cioè senza virgola ma cmq con lo zero davanti...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  6. #6
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558

    Re: [C] interi con lo zero

    Originariamente inviato da rocco.g
    ciao a tutti,
    dovrei realizzare un prog che salvi in un file dei dati inseriti dall'utente, in particolare dei numeri. Il prog funziona bene, ma quando si inserisce un intero da salvare che viene preceduto da uno zero questo viene salvato nel file senza lo zero, credo perchè siccome ho usato gli interi, il C crede che lo zero che precede il numero non sia una cifra significativa e quindi lo elimina in partenza...come posso fare per salvare l'intero così come viene scritto ?

    vi posto qui il codice C che ho scritto:

    ...

    E' il classico caso dei numeri di telefono in una rubbrica...

    Salvarli come int,oltre allo spiacevole effetto collaterale che hai descritto,nn è corretto: un numero di telefono deve essere inteso come una stringa,non come un intero.

    Perciò ti la soluzione + semplice è salvarla come array di char:

    codice:
    struct rubrica 
    
    {
    
    char acctNum [20] ; 
    char lastName [15] ; 
    char firstName [10] ; 
    char numero [20] ;
    
    }
    ad esempio.

    Così anche se l'utente inserisce un numero preceduto da 0 (ad es. un numero telefonico) viene interpretato come una stringa e lo 0 viene salvato.


  7. #7
    Originariamente inviato da rocco.g
    beh per il tuo scopo il double va benissimo :-)

    io invece intendo numeri tipo 0256356, cioè senza virgola ma cmq con lo zero davanti...
    ah ecco..credevo anche tu numeri con virgola intendevi e non con lo 0 come cifra di testa :gren:

    Grazie cmq

    ps li potrei salvare anche come float...facendo attenzione pero' a non usare la , ma il .

    ciaoo
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  8. #8
    ok ottima soluzione quella dell'array !!! grazie !
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

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