+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Compilatore (GCC) che mi segnala errore su sprintf

  1. #1
    joker_ltd non è in linea Novello
    Post
    2

    Compilatore (GCC) che mi segnala errore su sprintf

    Buongiorno a tutti

    ho un codice (ereditato) che contiene una serie di istruzioni sprintf, ma che all'atto della compilazione (il Makefile contiene solo una istruzione di build: di due files .c) mi si blocca sul fatto che vorrebbe che trasformi da sprintf in snprintf.
    Ora essendocene uno sproposito, e dovendo andare a settane il valore del buffer (la n di snprintf in pratioca) per ciascuno, ci metto una giornata. Premetto che il codice compilato va bene ma andava cambiata una stringa (un URL).
    Qualcuno mi sa dare un dritta del perche' si ostini a volere che io cambi le funzioni e di come potrei fare si che non mi sollevi questo errore in compilazione?

    Grazie mille
    Carlos

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,213
    Blogs
    5
    E' semplice. Quelle funzioni sono pericolose per problemi di possibili buffer e non vanno più usate. Al loro posto devono essere usate le versioni "sicure".

    Comunque, quale versione di gcc e quale messaggio esattamente ricevi?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    joker_ltd non è in linea Novello
    Post
    2
    Innanzi tutto grazie per la risposta.

    La versione di gcc e' la 4.4.5,

    il Makefile con tiene solo le seguenti righe

    build:
    c gt_searchhotels
    c gt_searchhotelsa


    il dump della compilazione e' il seguente

    make: *** No targets specified and no makefile found. Stop.
    [Exit 2]
    swdeveloper3@vm1142:~$ cd galileoturismo/gt_searchhotels/
    swdeveloper3@vm1142:~/galileoturismo/gt_searchhotels$ make
    c gt_searchhotels
    Attenzione : trovata immagine fuori dalla directory images :
    1159: /*printf("<body style='background: url(../immagini/sf.jpg);background-repeat: repeat-x;background-attachment:fixed;'>\n");*/

    Attenzione, ci sono 284 'sprintf', procedere alla sostituzione con 'snprintf' prima di procedere.
    gt_searchhotels.c: In function ‘main’:
    gt_searchhotels.c:614: error: expected expression before ‘/’ token
    gt_searchhotels.c: In function ‘stampafile’:
    gt_searchhotels.c:2211: warning: passing argument 2 of ‘sprintf’ makes pointer from integer without a cast
    /usr/include/stdio.h:341: note: expected ‘const char * __restrict__’ but argument is of type ‘long unsigned int’
    gt_searchhotels.c:2212: warning: passing argument 2 of ‘sprintf’ makes pointer from integer without a cast
    /usr/include/stdio.h:341: note: expected ‘const char * __restrict__’ but argument is of type ‘long unsigned int’
    gt_searchhotels.c:2369: warning: passing argument 2 of ‘sprintf’ makes pointer from integer without a cast
    /usr/include/stdio.h:341: note: expected ‘const char * __restrict__’ but argument is of type ‘long unsigned int’
    gt_searchhotels.c: In function ‘stampafilegruppi’:
    gt_searchhotels.c:2874: warning: passing argument 2 of ‘sprintf’ makes pointer from integer without a cast
    /usr/include/stdio.h:341: note: expected ‘const char * __restrict__’ but argument is of type ‘long unsigned int’
    gt_searchhotels.c:2573: warning: unused variable ‘record’
    gt_searchhotels.c:2573: warning: unused variable ‘k’
    gt_searchhotels.c:2572: warning: unused variable ‘appofine’
    gt_searchhotels.c:2572: warning: unused variable ‘appoinizio’
    gt_searchhotels.c:2566: warning: unused variable ‘uscita’
    gt_searchhotels.c:2565: warning: unused variable ‘ingresso’
    c gt_searchhotelsa

    Attenzione, ci sono 1 'sprintf', procedere alla sostituzione con 'snprintf' prima di procedere.

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi