Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#231
Programación C/C++ / Re: Código que no funciona
17 Octubre 2018, 16:06 PM
Esto es sólo lo básico que te ha puesto el profesor. Tienes que terminar la función y además escribir una función main para poder usarla.
#232
Se sigue declarando un array con una variable y esto depende del compilador que funcione.
Para hacerlo acorde al estándar usas un array grande, suficiente para cubrir tus necesidades, o usas la memoria dinámica con malloc.
#233
No se puede declarar un array estático usando una variable para dimensionarlo.
#234
Esto es trabajo con punteros. Da igual si es en estructura o fuera de ella. Para usar un dato antes debe existir.
#235
#include <stdio.h>
#include <stdlib.h>

typedef struct tipo_interior {
    int *pint;
} interior;

typedef struct {
    interior *pinterior;
} exterior;

int main() {
    int entero = 1;

    exterior e;
    e.pinterior = malloc(sizeof(interior));
    e.pinterior->pint = &entero;

    printf("%d", *e.pinterior->pint);

    free(e.pinterior);
}


e existe en la pila, por lo tanto es un dato que C trata automáticamente.
e.pinterior sólo es un puntero, para poder usar la estructura hay que dimensionarla en algún sitio. Cómo no se hace en la pila hay que llamar a malloc para que la dimensione en el montón. Al hacerlo de esa forma es responsabilidad del programador liberarla. Eso es lo que hace free(e.pinterior).
entero existe en la pila y cómo pasa con e C lo trata de forma automática.
e.pinterior->pint apunta a entero, por tanto y cómo ya existe (tiene dimensión) no hay que hacer nada. En estos casos lo que se debe procurar es que un puntero apunte a una de estas variables que C va a liberar automáticamente, que esta desaparezca pero siga existiendo el puntero, que ahora apuntaría a una zona de memoria sin dimensionar.
#236
Programación C/C++ / Re: Ayuda con temporizador
13 Octubre 2018, 20:37 PM
Eso es cuestión de diseño: si el dato de la constante lo va a usar una sola función declárala en la función, pero si va a ser un dato usado en diferentes funciones porque forma parte intrínseca el programa hazla global; ir pasándola por argumento a las diferentes funciones si no va a cambiar de valor pues es una pérdida de tiempo de procesador y memoria.
#237
Son punteros y los punteros sólo apuntan a sitios, no guardan datos. Así que g.hexagons al ser un simple puntero no contiene nada dentro.
Debes dimensionar un hexagon en la memoria del montón con malloc, de esta forma sí podrás acceder a vertice y éste sí apuntará a un dato, en tu caso a i1. Cómo lo has dimensionado a mano debes liberarlo a mano con free.

En el printf vas a acceder a a un dato apuntado por un puntero por lo que debes dereferenciarlo con *, en caso contrario verás la dirección de memoria del puntero, no el dato dónde apunta.
#238
Puedes empezar por SDL2. Es una librería portable para la creación de juegos 2D. Con ella manejas imagen, sonido, entradas (mandos, teclados, etc.).
#239
Seguro que has hecho una entrada por teclado antes. En ese caso se ha quedo '\n' dentro del buffer stdin y debes eliminarlo.
Cada vez que leas del teclado, por normal general, debes incluir un
while(getchar()!='\n');
eso vaciará el buffer hasta después de un carácter de nueva línea.
Digo por norma general porque fgets, gets, etc. sí adquieren el '\n' y la anterior sentencia creará una pausa.
#240
Dos fallos:
El argumento s no sirve para nada, nunca lo usas. Bórralo.
Para conseguir un caracter es %c. %s es para conseguir una cadena.