PDA

Visualizza la versione completa : [C] Sqlite e scanf


LedGiallo
11-05-2014, 17:29
Salve, no so qual'è il problema che quando digito una descrizione lunga e la vado inserire nel database mi viene tagliata..

ora il pezzo di codice è questo:

printf("Inserisci la descrizione : ");
scanf("%s", descrizione);
fflush(stdin);

e il suo char è di 256.

l'inserimento nel database è questo:

if (sqlite3_bind_text(stmt,2,descrizione,255,SQLITE_S TATIC)!= SQLITE_OK)
{
return 1;
}

Ora non ricevo nessun errore ma se scrivo:

"Creazione del programma da parte utente"

E mi viene tagliato a "Creazione"

come mai?

grazie mille e buona giornata.

Alex'87
11-05-2014, 17:52
E' corretto che si fermi a "Creazione" visto che è così che funziona scanf: al primo spazio si ferma.
Usa fgets()

LedGiallo
11-05-2014, 19:56
E' corretto che si fermi a "Creazione" visto che è così che funziona scanf: al primo spazio si ferma.
Usa fgets()
ok, per caso si usa fgets(descrizione,255,stdin);?
grazie mille.

LedGiallo
11-05-2014, 19:59
ok, fatto ma mi crea un accapo come risolvo?

grazie mille.

LedGiallo
11-05-2014, 20:23
risolto con questo: gets(descrizione);
giusto?
perché cosi funziona e non va accapo e mi prende tutto il testo..
grazie mille.

Scara95
11-05-2014, 20:37
risolto con questo: gets(descrizione);
giusto?
perché cosi funziona e non va accapo e mi prende tutto il testo..
grazie mille.
Giusto è giusto, ma non è sicuro, infatti se in input ci sono più caratteri della grandezza dell'array rischi un segfault o qualcosa del genere...

LedGiallo
11-05-2014, 21:00
Per caso fa questo effetto ??

23929

Che mi spopola il testo della descrizione anche nelle altri campi della tabella?

O è un mio errore di codifica oppure che ha trovato un carattere strano e ma lo a spopolato nei vari campi?

l'ho preso da lorem ipsum generator.

idee?.

grazie mille

Loading