aun que intente de varias formas al ultimo se soluciono con asignarle la misma direccion de memoria que la de la primera estructura.
lo que no entiendo bien es si lo que hace es tener la misma direccion de memoria que la primera estructura, no se supone que tiene acceso a esas datos por lo tanto al momento de decirle que agrege a la variable nom el nombre se debera de modificar lo valores de hay.
o acaso lo unico que sucede es que al aiganarle la misma direccion de memoria pero lo que hace es usarla para almacenare la estructura pero con sus respectivas variables nose si me puedas explicar bien esto.
Lo primero que debes hacer es explicarte de una forma mas clara ya que apenas se entiende ese texto y por favor (y lo digo en
buen plan) consigue un libro de calidad, no hay mejor forma de aprender que esa.
struct datos uno, dos;
struct da *d;
d = &dos;
Ahí declaras un puntero, una variable que
debe almacenar una dirección en memoria, eso lo consigues con la asignación "d = &dos". Después de eso al aplicar indirección con "*d." o "d->" ya no estas trabajando con la dirección en memoria de "dos" sino con el objeto "dos". En resumen puntero + indirección == objeto apuntado.
como hago para que el texto si se pueda ver en el archivo, bueno yo revise el codigo y no encuentro esos errores menores que dices y por lo tanto no los e podido corregir nose si me pdrias decir mis errores para intentar corregirlos.
Las partes a cambiar en tu ultimo programa sobre archivos son:
* Reservas memoria en dos ocasiones consecutivas cuando una sola basta.
* En C las conversiones explicitas al utilizar malloc, calloc y realloc no son necesarias y no se recomiendan.
* Si ocurre un error al tratar de abrir un archivo no tienes porque generar el mensaje manualmente, deja que perror lo haga.
* No hay necesidad de vaciar el bufer correspondiente con fflush.
* Abres al archivo en modo "a", ello implica que
todas las operaciones de escritura se realizaran al final del archivo
sin importar si utilizas fseek directa o indirectamente (via rewind).
Para almacenar las dos lineas en modo texto lo usual es fprint, por ejemplo:
#include <stdio.h>
#include <stdlib.h>
#define NOM_ARCHIVO "hola"
int main(void)
{
FILE *archivo;
char a[]= "Primera linea";
char b[]= "Segunda linea";
char c[sizeof a];
if ((archivo
= fopen(NOM_ARCHIVO
, "a")) == NULL
){ return EXIT_FAILURE;
}
if ((archivo
= fopen("hola", "r")) == NULL
){ return EXIT_FAILURE;
}
puts("Las lineas en el archivo son:"); while (fgets(c
, (int) sizeof c
, archivo
) != NULL
)
return EXIT_SUCCESS;
}
Si al ejecutarlo ocurre un error al abrir el archivo la función perror te dará (al menos en teoría) una idea de cual es.
Un saludo