Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - warning con le funzioni della string.h
Forum - C/C++ - warning con le funzioni della string.h

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 12:34
Martedì, 05/01/2010
salvè stò scrivendo una classe per la gestione delle stringhe  nell'overloading degli operatori eseguo queste operazioni:
Codice sorgente - presumibilmente C++

  1. stringa operator >=(const  stringa& a,const stringa& b)
  2. {
  3.         int mem1=0,mem2=0;
  4.         mem1=strlen(a.str);
  5.         mem2=strlen(b.str);
  6.         stringa risp;
  7.         if(mem1>mem2)
  8.         {
  9.                 strcpy(risp.str,"è maggiore ");
  10.         }
  11.         else if(mem1==mem2)
  12.         {
  13.                 strcpy(risp.str,"le due stringhe sono lunghe uguale");
  14.         }
  15.         else
  16.         {
  17.                 strcpy(risp.str,"è minore");
  18.         }
  19.         return risp.str;
  20. }




il fatto stranoè che tutte le volte che compilo mi dà i seguenti errori:
warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


Non sò come fare per rimuovere questi warning cosa devo modificare?? aiutatemi!

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:36
Martedì, 05/01/2010
Non e' un fatto strano e il messaggio del warning è chiaro.

Al posto della strcpy usa la funzione strcpy_s

oppure usa una

#pragma warning (disable:4996)

oppure ignora i warnings.

Ultima modifica effettuata da nessuno il 05/01/2010 alle 12:39


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 12:39
Martedì, 05/01/2010
il fatto è che se metto la strcpy_s vuole sapere nei parametri quanta memoria deve usare il mio probblema è che non sò questo parametro e è difficile lasciare stare gli warning perchè nel programma uso quelle funzioni una ventina di volte e sono 20 warning!

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:46
Martedì, 05/01/2010
Testo quotato

Postato originariamente da matteog:

il fatto è che se metto la strcpy_s vuole sapere nei parametri quanta memoria deve usare il mio probblema è che non sò questo parametro



Come non hai questo parametro? E' la lunghezza di quello che copi ... forse non hai capito come si usa la strcpy_s

Testo quotato

e è difficile lasciare stare gli warning perchè nel programma uso quelle funzioni una ventina di volte e sono 20 warning!



Se vuoi eliminare i warning usa la pragma ... te l'ho gia' detto ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 12:47
Martedì, 05/01/2010
ok tanks

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 20:05
Martedì, 05/01/2010
non usare strcpy_s, è una funzione che solo Microsoft ha inserito nel suo compilatore perché le è venuta voglia di cambiare come al solito le cose.

Nessun altro compilatore la supporta

PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 20:35
Martedì, 05/01/2010
no infatti ho fatto diversamente ho cretao io una funzione e ho fatto rpima ehehe tanks lorenzo

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 16:25
Venerdì, 15/01/2010
Testo quotato

Postato originariamente da lorenzo:

non usare strcpy_s, è una funzione che solo Microsoft ha inserito nel suo compilatore perché le è venuta voglia di cambiare come al solito le cose.

Nessun altro compilatore la supporta



vero che nessun altro compilatore lo supporta, ma la microsoft ha avuto una trovata veramente geniale. Ha aggiunto a quasi tutte le funzioni del crt una corrispettiva safe per evitare problemi con la lunghezza dei buffer e tutti i security hole ad essi legati.

Basta fare un piccolo lavoretto con il preprocessore per usare tranquillamente le funzioni safe solo quando si è sotto vs :)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:36
Venerdì, 15/01/2010
Testo quotato

Postato originariamente da HeDo:

Testo quotato

Postato originariamente da lorenzo:

non usare strcpy_s, è una funzione che solo Microsoft ha inserito nel suo compilatore perché le è venuta voglia di cambiare come al solito le cose.

Nessun altro compilatore la supporta



vero che nessun altro compilatore lo supporta, ma la microsoft ha avuto una trovata veramente geniale.



Beh ... non è una trovata cosi' originale ...

Esistono gia' le funzioni strncpy e compagnia ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo