Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: soyloqbuskas en 19 Noviembre 2023, 12:05 pm



Título: crear archivo con variable de entorno c++ windows
Publicado por: soyloqbuskas en 19 Noviembre 2023, 12:05 pm
Buenas a todos.

Querria saber como crear un archivo en una carpeta referenciada mediante variable de entorno (o variable del sistema) programando en c o c++ para windows.

Seria algo asi pero con codigo: crearArchivo("nombre archivo","%rutaCarpetaEntorno%/subdirectorio");

¿Sabéis lo que digo?

Gracias, un saludo.



Título: Re: crear archivo con variable de entorno c++ windows
Publicado por: EdePC en 19 Noviembre 2023, 17:06 pm
Claro, puedes pedir variables de entorno con una librería clásica de C que se puede utilizar en C++: cstdlib y la instrucción: getenv("VariableDeEntorno")

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. int main() {
  5.  std::cout << std::getenv("UserName");
  6. }


Título: Re: crear archivo con variable de entorno c++ windows
Publicado por: Atika en 11 Diciembre 2023, 23:00 pm
En Windows, puedes acceder a las variables de entorno utilizando la función  getenv() para obtener la ruta de la carpeta desde la variable de entorno y luego usar esa ruta para crear un archivo. Aquí te pongo un ejemplo en C++:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdlib> // Incluir la librería para manejar variables de entorno
  4.  
  5. bool crearArchivo(const std::string& nombreArchivo, const std::string& rutaCarpeta) {
  6.    // Obtener la ruta de la carpeta desde la variable de entorno
  7.    const char* rutaEntorno = getenv("NOMBRE_VARIABLE_ENTORNO"); // Reemplaza "NOMBRE_VARIABLE_ENTORNO" con el nombre de la variable de entorno que necesitas
  8.  
  9.    if (rutaEntorno == nullptr) {
  10.        std::cerr << "La variable de entorno no está definida." << std::endl;
  11.        return false;
  12.    }
  13.  
  14.    // Combinar la ruta de la carpeta del entorno con la subcarpeta
  15.    std::string rutaCompleta = std::string(rutaEntorno) + "/" + rutaCarpeta;
  16.  
  17.    // Combinar la ruta completa con el nombre del archivo
  18.    rutaCompleta += "/" + nombreArchivo;
  19.  
  20.    // Crear el archivo en la ruta completa
  21.    std::ofstream archivo(rutaCompleta);
  22.  
  23.    if (!archivo.is_open()) {
  24.        std::cerr << "Error al crear el archivo." << std::endl;
  25.        return false;
  26.    }
  27.  
  28.    archivo << "Este es el contenido del archivo." << std::endl;
  29.    archivo.close();
  30.  
  31.    std::cout << "Archivo creado en: " << rutaCompleta << std::endl;
  32.    return true;
  33. }
  34.  
  35. int main() {
  36.    std::string nombreArchivo = "miArchivo.txt";
  37.    std::string rutaCarpetaEntorno = "subdirectorio";
  38.  
  39.    if (crearArchivo(nombreArchivo, rutaCarpetaEntorno)) {
  40.        std::cout << "¡Archivo creado exitosamente!" << std::endl;
  41.    } else {
  42.        std::cerr << "Hubo un error al crear el archivo." << std::endl;
  43.    }
  44.  
  45.    return 0;
  46. }


Haber si te sirve este programa.

MOD: Etiqueta GeSHi


Título: Re: crear archivo con variable de entorno c++ windows
Publicado por: soyloqbuskas en 12 Diciembre 2023, 14:38 pm
Muchas gracias a los 2. Me ha servido de mucho.

Un saludo.