Visualizzazione dei risultati da 1 a 4 su 4

Discussione: usare sprintf

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110

    usare sprintf

    ciao a tutti,
    sto cercando di capire come funziona la sprintf, ma mi viene qualche dubbio.

    dovrei scrivere un programma che poi interagisce con un database sqlite, ma ho solo 3 operazioni da fare

    inserire, leggere, cancellare

    quindi pensavo di utilizzare 3 stringhe predefinite a cui dare solo i valori in input
    molto probabilmente dovrei usare anche un allocazione dinamica per le stringhe, ma al momento non è questo il problema

    il programma funziona unca cosa che non capisco perchè assegna un valore sbagliato ad un float che è prefissato
    il codice è questo

    codice:
    #include <stdio.h>
    #include <sqlite3.h>	 
    	 
    main()
    {
    sqlite3* db;
    sqlite3_stmt* result;
    int i,sel,id,test;
    char app[20]="nome";
    char delete[80];
    char read[25]="SELECT * FROM Agenda";
    char insert[150];	
    float created; 
    
    
    id=1;
    created=234567.542;
    
    printf("Quale operazione vuoi eseguire? \n");
    printf("1-Inserisci nuovi impegni \n");
    printf("2-Leggi gli impegni \n");
    printf("3-Cancella impegni \n");
    
    scanf("%d",&sel);
    
    if(sel==1)
    {
    test=sprintf(insert,"INSERT INTO Agenda Values( %d,%s,%f,0,3) \n",id,app,created);
    printf("%s",insert);
    }
    else if(sel==2)
    printf("%s \n",read);
    else
    {
    scanf("%d",&i);
    test=sprintf(delete,"DELETE FROM Agenda Where id = %d \n",i);
    printf("%s",delete);
    }
    
    }
    e al posto di created che dovrebbe essere 234567.542 mi stampa il valore 234567.546875
    da che dipende??

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510

    Re: usare sprintf

    Usa un double invece che un float, la precisione è limitata, non è possibile rappresentare con esattezza certi numeri con un numero limitato di bit.

    Ma cosa non hai capito della sprintf?

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Utilizza un double e non un float
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110

    Re: Re: usare sprintf

    Originariamente inviato da Who am I
    Usa un double invece che un float, la precisione è limitata, non è possibile rappresentare con esattezza certi numeri con un numero limitato di bit.

    Ma cosa non hai capito della sprintf?
    mentre scrivevo mi sono reso conto dell'errore che commettevo ^^
    avevo fatto
    codice:
    stringa=sprintf(insert,"Insert to agenda values....");
    e mi dava errore, poi ho visto meglio la documentazione e ho capito il perchè
    il risultato doveva essere un intero e questa era la causa del problema, poi andando ad eseguire mi ha dato l'errore quando stampava created
    ora è tutto risolto grazie ad entrambi :-)

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.