Archivos c++

Iniciado por estivinho, 28 Noviembre 2012, 04:33 AM

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

estivinho

Buenas  :silbar: :silbar:

Mi problema es el siguiente,
Quiero saber como hacer para agregar informacion a una linea espesifica del Archivo es decir el archivo se llena con base a una etructura que tiene:

codigo
materia1
materia2
materia3
materia4
materia5

mi pregunta es:
yo tengo que registrar a todos los alumnos pero cuando ellos quieran inscribir materias ellos digiten el codigo que inscribi anteriormente yo y que lo busque y se pare en esa linea ((eso lo se hacer)) no se como hacer para que les aparezca la opcion de digitar las materias sobre esa linea en especifico

Espero me puedan ayudar.
GRACIAS.

someRandomCode

Que IDE y que herramientas de trabajo estas usando?
Existe gotoxy() pero no siempre esta disponible.
y sino podes hacer un system("clear") o system("cls") y acomodarlo a tu gusto, y despues pedir el input del usuario...

x64core

No especificas absolutamente nada de informacion importante, por ejemplo si todo es por consola, GUI w32, MS macros, etc
Además casi no te entiendo porque no especificas bien además.

estivinho

#3
Código (cpp) [Seleccionar]


void inscribir()
{
       HANDLE hConsoleHandle = GetStdHandle (STD_OUTPUT_HANDLE);
       int opcion, exit=0;
       FILE *Notas;
       FILE *Estudiante;
       FILE *Profesor;
       FILE *Coordinador;
       int codigo,clave;
       
       
       printf("INBRIPCION DE MATERIAS");
       printf("Digite su codigo");
       scanf("%d", &codigo);
       
       Notas = fopen("Notas.txt", "r");
       if(Notas == NULL)
       {
               printf("\nFichero no existe! \nPor favor creelo");
               return;
       }
     while(fread(&dat, sizeof(struct sDatos), 1, Notas)==1)
{
     if (codigo == dat.Codigo){InsertarNotas(Notas);}  /*dat es la etructua que contiene los datos de codigo y materias*/
      /*hay me pierdo me localizo en la linea en donde esta el codigo del estudiante pero no se como hacer para que llena esa info*/
      }  
}

Q pena, tal vez asi me entiendan un poco mejor :P la idea es que ya que se localizo hay en esa zona especifica el estudiante pueda inscribir sus materias ejemplo me salga por pantalla

Código (cpp) [Seleccionar]
printf("Digite la primera materias que queire inscribir");
scanf("%s", dat.materia1);


y asi sucesivamente el fichero tendra solamente el codigo del estudiante para poder buscar la linea y asi poderle insertar los demas datos

el fichero lo tengo asi:

Código (cpp) [Seleccionar]

void VerNotas(FILE *Notas)
{
       int numero = 1;
       HANDLE hConsoleHandle = GetStdHandle (STD_OUTPUT_HANDLE);
       SetConsoleTextAttribute (hConsoleHandle, 2 | FOREGROUND_INTENSITY);

       Notas = fopen("Notas.txt", "r");

       if(Notas == NULL)
       {
               printf("\nFichero no existe! \nPor favor creelo");
               return;
       }

       fread(&dat, sizeof(struct sDatos), 1, Notas);
       printf("\nNumero \tCodigo  \tMateria1  \tMateria2   \tMateria3   \tMateria4   \tMateria5");
       
       while(!feof(Notas))
       {
               SetConsoleTextAttribute (hConsoleHandle, 7 | FOREGROUND_INTENSITY);          
               printf("\n%d     \t%d       \t%d       \t%d      \t%d       \t%d       \t%d",numero,dat.Codigo,
               dat.Materia1,dat.Materia2,dat.Materia3,dat.Materia4,dat.Materia5);
               fread(&dat, sizeof(struct sDatos), 1, Notas);
               numero++;
       }

printf("\n\n");
       fclose(Notas);

       menuEstud();
}


la idea es que cuando el Coordinador mire el fichero "Notas" le salga en orden como esta

Codigo        Materia1       Materia2        Materia3      Materia4        Materia5
120          campovacio   campovacio   campovacio  campovacio  campo vacio
121          campovacio   campovacio   campovacio  campovacio  campo vacio
122          campovacio   campovacio   campovacio  campovacio  campo vacio
123          campovacio   campovacio   campovacio  campovacio  campo vacio
124          campovacio   campovacio   campovacio  campovacio  campo vacio

y que cuando inscriba se valla llenando cada campo

ESPERO ME PUEDAN AYUDAR GRACIAS.
compilador dev-c++ 4.9.9.2
:) :)

x64core

leer, escribir datos en la consola lo podes hacer, para tener ordenado la informacion en el fichero te recomiendo usar
una estructure, puedes hacer una estructura de este tipo:

typedef _Information
{
      UCHAR    Codigo[5];
      CHAR      Campo1[10];
      CHAR      Campo2[10];
      CHAR      Campo3[10];
      CHAR      Campo4[10];
      CHAR      NewLine[2];
}Information,*PInformation;

solamente tienes que inicializar a 0x20 (memset) e ir rellenando la estructura con la información del usuario.
lo que veo es que ya tenes la idea, nosé lo que andais buscando.
Si modificar una linea especeifica quieres entonces debes de parsear el archivo de texto obtener el puntero al buffer que contiene
todo el texto he ir recorriendo usando un puntero a la estructura del tipo ( verificando el campo "codigo" sino pasar a la siguiente con puntero + sizeof o simplemente puntero de tipo de estructura + 1).