Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    problema query sqlite[C]

    allora nel mio programma man mano che vengono inseriti dei dati salvo le relative query in un file .sql poi lo leggo tramite una mia funzione(vedo anche cosa legge e sembra leggere tutto bene) e poi chiamo la funzione sqlite3_exec per eseguire la query(o + query) ma il problema è che mi crasha il programma subito dopo che stampo ciò che leggo.
    ecco il codice:
    codice:
    void save_tmp_file(const char* path,sqlite3* sql){
    	FILE* f;
    	long size;
    	char* buf;
    	char* mex=0;
    	f=fopen(path,"r");
    	fseek(f,0,SEEK_END);
    	size=ftell(f);
    	rewind(f);
    	buf=(char*)malloc(sizeof(char)*size);
    	fread(buf,1,size,f);
    	printf("%s",buf);
    	if(!sqlite3_exec(sql,buf,0,0,&mex)){
    		printf("%s",mex);
    	}
    	fclose(f);
      	free(buf);
    	
    }
    non capisco dove sbaglio
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Le stringhe in C hanno un terminatore ... devi prevederlo nella malloc

    buf=(char*)malloc(sizeof(char)* (size+1));

    e devi accertarti che ci sia nella stringa alla fine dopo la lettura dal file.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Le stringhe in C hanno un terminatore ... devi prevederlo nella malloc

    buf=(char*)malloc(sizeof(char)* (size+1));

    e devi accertarti che ci sia nella stringa alla fine dopo la lettura dal file.
    si lo so ma nel scrivere l'ho dimenticato...cmq anche correggendo niente...
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da Metflar
    si lo so ma nel scrivere l'ho dimenticato...
    Se lo dimentichi hai quell'errore ...

    cmq anche correggendo niente...
    Non basta quella correzione ... ti avevo detto di accertarti che ci sia il terminatore alla fine della stringa ... lo hai fatto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Se lo dimentichi hai quell'errore ...



    Non basta quella correzione ... ti avevo detto di accertarti che ci sia il terminatore alla fine della stringa ... lo hai fatto?
    se ti riferisci alla stringa che vado a salvare sul file si ce l'ha se ti riferisci a quella letta non ce l'ha :master:
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da Metflar
    se ti riferisci alla stringa che vado a salvare sul file si ce l'ha se ti riferisci a quella letta non ce l'ha :master:
    Mi riferisco sempre a buf ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Mi riferisco sempre a buf ...
    ho provato a inserirlo così:
    codice:
    buf[size] = '\0';
    ma niente
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma in quale riga hai l'errore? Quale errore in dettaglio? Cosa contiene la stringa buf prima dell'errore?

    P.S. Se usi la fread per leggere tutto il file devi aprirlo in binario

    f=fopen(path,"rb");
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    Ma in quale riga hai l'errore? Quale errore in dettaglio? Cosa contiene la stringa buf prima dell'errore?
    forse non hai letto bene il primo post...non c'è nessun errore crasha e basta(è un segmentation fault) e pare che esce fuori quando provo a eseguire le/la query
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da Metflar
    forse non hai letto bene il primo post...
    Perche' dici che non l'ho letto?

    non c'è nessun errore crasha e basta(è un segmentation fault)
    Un "crash" (o segmentation fault) e' comunque un errrore e avviene in una "specifica" riga, quasi sempre a causa di un puntatore che ha un valore sbagliato.

    Volevo sapere quando avviene l'errore (il crash) e lo puoi sapere eseguendo passo passo riga per riga il tuo sorgente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.