quando cerco di fare le cose in questo modo:Perché MSVC++ considera "std :: strcat" non "sicuro"? (C++)
char* prefix = "Sector_Data\\sector";
char* s_num = "0";
std::strcat(prefix, s_num);
std::strcat(prefix, "\\");
e così via e così via, ho ricevuto un avviso
warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.
Perché strcat considerate non sicure, e c'è un modo sbarazzarsi di questo avviso senza usare strcat_s?
Inoltre, se l'unico modo per eliminare l'avviso è utilizzare strcat_s, come funziona (sintassi: apparentemente non ci vogliono due argomenti).
dovresti sapere che il tuo esempio è orribilmente sbagliato. Le costanti stringa (come ad esempio: char * s = "hello";) NON sono scrivibili. Se sei fortunato, si bloccherà, se sei sfortunato farà in modo che l'applicazione si comporti in modo non corretto in qualche modo sottile. il modo corretto per eseguire ciò che si desidera è il seguente: prefisso char [SIZE] = "Sector_Data \\ sector"; dove SIZE è abbastanza grande da contenere il prefisso E qualunque cosa si intenda aggiungervi. –
Come scritto, l'esempio contiene un buffer overflow. Non solo un possibile overflow del buffer, ma un certo. –