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??