cuando trato de hacer cosas como esta:¿Por qué MSVC++ considera que "std :: strcat" es "inseguro"? (C++)
char* prefix = "Sector_Data\\sector";
char* s_num = "0";
std::strcat(prefix, s_num);
std::strcat(prefix, "\\");
y así sucesivamente y así sucesivamente, recibo una advertencia
warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.
¿Por qué es strcat considera inseguro, y hay una manera para deshacerse de esta advertencia sin usar strcat_s?
Además, si la única manera de deshacerse de la advertencia es usar strcat_s, ¿cómo funciona? (Sintaxis: aparentemente no toma dos argumentos).
debe saber que su ejemplo es terriblemente incorrecto. Las constantes de cadena (como: char * s = "hello";) NO son grabables. Si tiene suerte, se bloqueará, si tiene mala suerte hará que la aplicación funcione incorrectamente de alguna manera sutil. la forma correcta de hacer lo que quería es así: prefijo de pila [SIZE] = "Sector_Datos \\ sector"; donde TAMAÑO es lo suficientemente grande como para contener el prefijo Y lo que sea que desee agregar a él. –
Tal como está escrito, su ejemplo contiene un desbordamiento de búfer. No solo un posible desbordamiento del búfer, sino cierto. –