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.
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...
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.
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
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:
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
:) :)
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).