elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5
31  Programación / Programación C/C++ / Re: Función fread y saltos de línea en: 20 Marzo 2013, 20:25 pm
Hay una cosa en el código que no entiendo (siento ser tan pesado). Cuando hago lo siguiente:

Código
  1. while( ! feof(fichero) )
  2.    {
  3.           num_regs = fread(reg, sizeof(struct reg), MAX_REGS, entrada);
  4.           /*********************/
  5.  

Ahí se copia todo el contenido del fichero en reg[0].nombre, lo cual no entiendo muy bien.

Gracias de antemano y perdón por las molestias
 
Edito:

Vale, era porque en el fichero no había escrito con fwrite. Ahora creo que lo entiendo todo. Muchas gracias por tu ayuda y paciencia.
32  Programación / Programación C/C++ / Re: Función fread y saltos de línea en: 20 Marzo 2013, 10:21 am
Una última cuestión. Suponiendo que el censo contiene datos de miles de personas, ¿cuál sería la estrategia para ver cada una de ellas, usando fread? Porque con fgets es sencillo, pero no tengo claro cómo sería con fread, con tantos datos. Porque la cuestión es que cada persona tendrá varios datos, y necesito tener en cuenta uno en concreto (la fecha de nacimiento) para escoger a quién copiar en un segundo fichero .txt que crearé.
33  Programación / Programación C/C++ / Re: Función fread y saltos de línea en: 19 Marzo 2013, 18:16 pm
Correcto
Entonces lo mejor es utilizar fgets para leer por linea (y por ende por registro). Si necesitas separar la linea en componentes (nombre, dirección, etc.) puedes utilizar funciones como strtok.

Un saludo
Éso es lo que pienso yo, pero nos dijeron que con ficheros binarios había que utilizar fread, no fgets...
34  Programación / Programación C/C++ / Re: Función fread y saltos de línea en: 19 Marzo 2013, 10:52 am
Muchas gracias por responder. Entonces, si lo hago con fread, tendría que mirar yo mismo manualmente los '\n' (si es que se supone que para habitante del censo del fichero .dat hay una línea).

Gracias y saludos
35  Programación / Programación C/C++ / Función fread y saltos de línea en: 19 Marzo 2013, 00:25 am
Buenas a todos, mi problema es que no entiendo ciertas cosas sobre los ficheros, más concretamente la diferencia entre ficheros binarios y de texto, las funciones para cada tipo...

Por ejemplo, en un examen de otro día, teníamos en un archivo de extensión .dat (entiendo que es binario, así que lo abrí como tal). Se trataba de un censo con la información de los habitantes, y si cumplían ciertos requisitos, había que copiarlos a un fichero .txt. No se me ocurrió otra forma que hacerlo con fgets, para tener en cuenta los saltos de línea, asumiendo que cada habitante está en una línea (¿cómo puedo hacerlo con fread?). Y claro, lo hice mal (y éso que con fgets funciona sin problema). Por éso, no tengo nada claro por qué con una función sí y con otra no, y cómo usarla...

Gracias de antemano y saludos.
36  Programación / Programación C/C++ / Re: Estructuras anidadas, funciones y punteros en: 17 Marzo 2013, 17:37 pm
Muchas gracias a los dos :D Ya veo que era un error sintáctico, pensaba que había probado todas las formas...  ;D

Me ha surgido otra duda (siento ser tan pesado). ¿Cuál es la diferencia entre

Código
  1. (*(hotel + i)).numero_clientes = 0;

y


Código
  1. (hotel+i)->numero_clientes = 0;

? Ambas opciones me las da como válidas en la misma función, independientemente de haber usado calloc o no (¿y la diferencia entre inicializar con calloc y estáticamente como un array?).
37  Programación / Programación C/C++ / Re: Estructuras anidadas, funciones y punteros en: 17 Marzo 2013, 16:35 pm
Hola avesudra, gracias por responder.

Así lo he hecho funcionar, modificando el parámetro de la función, solamente poniendo * en lugar de []. Pero verás, como se trata de hacer el ejercicios con punteros, asumo que debe de haber más cambios, no algo tan simple como cambiar los parámetros. Como, por ejemplo, acceder a los valores con la notación de punteros en lugar de con la de los arrays, o usando el operador -> en lugar de ., para acceder a las estructuras.

Si no me he expresado con claridad sólo tienes que preguntarme :)

Muchas gracias
38  Programación / Programación C/C++ / Estructuras anidadas, funciones y punteros en: 17 Marzo 2013, 15:25 pm
Buenas a todos, tengo unas cuantas dudas y espero poder resolverlas con vosotros.

Tengo que coger un ejercicio de administración de hoteles, hecho anteriormente, y hacerlo, pero esta vez usando punteros.

Por ejemplo, las primeras líneas del .c con main, donde declaro la estructura y la inicializo:

Código
  1. HOTELES hotel[NUM_HOTELES];          //3 hoteles
  2.  
  3. /***************/
  4. HOTELES_inicializarHoteles(hotel); //Inicializamos el número de clientes de cada hotel a 0
 

Dicha función está definida así:

Código
  1. void HOTELES_inicializarHoteles(HOTELES hotel[])
  2. {
  3. int i;
  4.  
  5. for(i=0; i<NUM_HOTELES; i++)
  6. {
  7. hotel[i].numero_clientes = 0;
  8. }
  9. }

Como se trata de reescribir el programa usando punteros, me he limitado a cambiar el parámetro:

Código
  1. void HOTELES_inicializarHoteles(HOTELES *hotel)

Pero no consigo hacer nada. Me da error tanto si intento acceder a la posición del hotel con aritmética de punteros

Código
  1. *(hotel + i).numero_clientes = 0;

como accediendo a la estructura con el operador "->"

Código
  1. hotel[i]->numero_clientes = 0;

(Y haciendo ambas cosas juntas también de da error, claro).

En cambio, si en el parámetro de la función defino hotel como indirección doble, sí que debo emplear el operador "->". Pero bueno, que tampoco tengo del todo claro por qué hay que hacerlo así, lo he hecho un poco al tuntún. Además, así da error en ejecución...

Mi otra duda es si también debería modificar las estructuras anidadas, es decir, si en el primer ejercicio tengo una estructura dentro de otra de forma "simple", si ahora tengo que anidarlas usando punteros.

El tema de los punteros lo tengo claro, cómo y cuándo usar los operadores, direcciones de memoria, etc. Pero ahora con las estructuras no lo tengo nada claro.

Gracias de antemano, perdón por el tocho y saludos.
39  Programación / Programación C/C++ / Guardar cada línea de un fichero en una estructura en: 5 Marzo 2013, 19:56 pm
Hola, quiero hacer lo siguiente, pero no lo consigo.

En cada linea del fichero se supone hay un nombre, y cada uno de esos nombres quiero guardarlos en una estructura. Estaría definida así:

Código:
typedef struct{
nombre[20];
}ESTRUCTURA

Y en el main así:

Código:
ESTRUCTURA estruc[20]

Entonces, lo que yo quiero es guardar la primera línea del fichero en la primera posición, la segunda en la segunda, etc.

Para hacerlo, hago lo siguiente:
Código:
while( ! feof(fichero) )
    {
           fseek(fichero, pos_seek, SEEK_SET);
           fgets(estructura[i].nombre, 80, fichero);
           pos_seek += strlen(estructura[i].nombre);
           i++;
    }

Pero no funciona como debería.

Gracias de antemano.
40  Programación / Programación C/C++ / Re: Duda sobre funciones que devuelven punteros en: 28 Febrero 2013, 21:08 pm
Muchas gracias a ambos, ahora lo he entendido (y mira que era obvio  :-\;) ;)
Páginas: 1 2 3 [4] 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines