[C] Duda, código y memoria.

Iniciado por KZN, 11 Agosto 2016, 06:15 AM

0 Miembros y 1 Visitante están viendo este tema.

KZN

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

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <dir.h>

int main () {

chdir ("C:\Users\user\Desktop");
mkdir ("app");
}


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  :-\

class_OpenGL

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.

#include <windows.h>
#include <iostream>

int main() {
    const int bufferSize = MAX_PATH;
    char oldDir[bufferSize]; // store the current directory
   
    // get the current directory, and store it
    if (!GetCurrentDirectory(bufferSize, oldDir)) {
        std::cerr << "Error getting current directory: #" << GetLastError();
        return 1; // quit if it failed
    }
    std::cout << "Current directory: " << oldDir << '\n';

    // new directory
    const char* newDir = R"(C:\path\to\directory\)"
    if (!SetCurrentDirectory(newDir)) {
        std::cerr << "Error setting current directory: #" << GetLastError();
        return 1; // quit if we couldn't set the current directory
    }
    std::cout << "Set current directory to " << newDir << '\n';

    // Delete some files
    DeleteFile("file1.txt");
    DeleteFile("bin\\file2.exe");
    DeleteFile(R"(data\things\other\file3.zip)");

    // Reset the current directory back to what it was.
    if (!SetCurrentDirectory(oldDir)) {
        std::cerr << "Error resetting current directory: #" << GetLastError();
        return 1;
    }
    std::cout << "Reset current directory. \n";

    // ...

    return 0;
}


FUENTE del código: pincha aquí

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

ivancea96

Cita de: 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

[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.

KZN

Muchas gracias al usuario ivancea96 por resolver mi problema.