Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: KZN en 11 Agosto 2016, 06:15 am



Título: [C] Duda, código y memoria.
Publicado por: KZN en 11 Agosto 2016, 06:15 am
Buenas, soy nuevo con el lenguaje de programación C, hasta ahora hacía cosas simples con "lenguaje" tipo bat. Estaba buscando ir a un directorio y crear la carpeta, pero no consigo que al compilar tenga memoria y me cree la carpeta donde yo le mando. Vengo de un "lenguaje" mas que eso yo le llamaría ordenes, no lo considero un lenguaje, el caso es que siempre lo e echo todo en bat, asique les agradecería unos consejos

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <dir.h>
  5.  
  6. int main () {
  7.  
  8. chdir ("C:\Users\user\Desktop");
  9. mkdir ("app");
  10. }

Lamento lo de las etiquetas, pero es que ya no recuerdo como se ponían.


Mod: Los códigos deben ir en etiquetas GeSHi.. spoiler? que es eso  :-\


Título: Re: [C] Duda, código y memoria.
Publicado por: class_OpenGL en 11 Agosto 2016, 06:53 am
Cuando pones un código, lo mejor sería que dijeras el problema CONCRETO que se te presenta. En este caso, estás usando Windows (porque incluyes windows.h), pero estás usando la función chdir, la cual creo que no se puede usar en Windows (creo que se usa en sistemas Linux). Lo siento, pero si quieres cambiar el directorio en Windows, vas a tener que usar la API de Windows, y si vas a trabajar en sistemas Linux, puedes seguir usando chdir.

Ejemplo de cómo cambiar el directorio con la API de Windows (ejemplo sacado de Internet):

NOTA: El código puede parecer largo. Lo que pasa es que aquí se hacen más pasos que cambiar el directorio, pero en esencia, deberías ser capaz de ver cómo usar la API de Windows.

Código
  1. #include <windows.h>
  2. #include <iostream>
  3.  
  4. int main() {
  5.    const int bufferSize = MAX_PATH;
  6.    char oldDir[bufferSize]; // store the current directory
  7.  
  8.    // get the current directory, and store it
  9.    if (!GetCurrentDirectory(bufferSize, oldDir)) {
  10.        std::cerr << "Error getting current directory: #" << GetLastError();
  11.        return 1; // quit if it failed
  12.    }
  13.    std::cout << "Current directory: " << oldDir << '\n';
  14.  
  15.    // new directory
  16.    const char* newDir = R"(C:\path\to\directory\)"
  17.    if (!SetCurrentDirectory(newDir)) {
  18.        std::cerr << "Error setting current directory: #" << GetLastError();
  19.        return 1; // quit if we couldn't set the current directory
  20.    }
  21.    std::cout << "Set current directory to " << newDir << '\n';
  22.  
  23.    // Delete some files
  24.    DeleteFile("file1.txt");
  25.    DeleteFile("bin\\file2.exe");
  26.    DeleteFile(R"(data\things\other\file3.zip)");
  27.  
  28.    // Reset the current directory back to what it was.
  29.    if (!SetCurrentDirectory(oldDir)) {
  30.        std::cerr << "Error resetting current directory: #" << GetLastError();
  31.        return 1;
  32.    }
  33.    std::cout << "Reset current directory. \n";
  34.  
  35.    // ...
  36.  
  37.    return 0;
  38. }

FUENTE del código: pincha aquí (http://www.cplusplus.com/forum/general/130196/)


Título: Re: [C] Duda, código y memoria.
Publicado por: ivancea96 en 11 Agosto 2016, 13:33 pm
Buenas, soy nuevo con el lenguaje de programación C, hasta ahora hacía cosas simples con "lenguaje" tipo bat. Estaba buscando ir a un directorio y crear la carpeta, pero no consigo que al compilar tenga memoria y me cree la carpeta donde yo le mando. Vengo de un "lenguaje" mas que eso yo le llamaría ordenes, no lo considero un lenguaje, el caso es que siempre lo e echo todo en bat, asique les agradecería unos consejos

[SPOILER]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <dir.h>

int main () {

chdir ("C:\Users\user\Desktop");
mkdir ("app");
}
[/spoiler]

Lamento lo de las etiquetas, pero es que ya no recuerdo como se ponían.

Cuando en un literal pones "\", es un carácter de escape. Si quieres realmente poner el caracter '\', tendrás que ponerlo 2 veces: "C:\\Users\\user\\Desktop"

Con eso, te debería ir en principio.


Título: Re: [C] Duda, código y memoria.
Publicado por: KZN en 13 Agosto 2016, 01:23 am
Muchas gracias al usuario ivancea96 por resolver mi problema.