Lenguaje C
Aqui hay otro ejemplo de un archivo de texto con multiples formatos:
#define _CRT_SECURE_NO_WARNINGS //Es para que el compilador no de errores
#include <iostream>
#include <stdio.h>
#include<string.h>
typedef struct s_alumnos {
int id;
char pregunta[30];
char opciones[30];
char respuesta[30]; // 'a' , 'b' o 'c'
char respuesta_letra;
int respuesta_puntuaje;
// int puntaje_alumno; // un numero 1-20
} DATOS;
int leer_pregunta(DATOS datos_leidos[], char filename_func[]) {
// Devuelve
// 0: no pudo abrior el archivo.
// 1: Se escribio el caracter.
FILE* fp_func;
long numero = 0;
if (fopen_s(&fp_func, filename_func, "r") != 0) {
printf("No se pudo abrir el archivo %s", filename_func);
return 0;
}
// numero = fscanf(fp_func, "%d %s %s %s ", &(datos_leidos[0].id), datos_leidos[0].pregunta,datos_leidos[0].opciones,datos_leidos[0].respuesta);
numero = fscanf(fp_func, "%d %s %s %s ", &(datos_leidos[0].id),
datos_leidos[0].pregunta,
datos_leidos[0].opciones,
datos_leidos[0].respuesta);
// Imprime el formato leida
printf("\nID: %d", datos_leidos[0].id);
printf("\nPregunta: %s", datos_leidos[0].pregunta);
printf("\nOpciones: %s", datos_leidos[0].opciones);
printf("\nRespuesta: %s", datos_leidos[0].respuesta);
sscanf(datos_leidos[0].respuesta,"%c,%d", &(datos_leidos[0].respuesta_letra), &(datos_leidos[0].respuesta_puntuaje));
printf("\nRespuesta letra: %c", datos_leidos[0].respuesta_letra);
printf("\nRespuesta puntaje: %d", datos_leidos[0].respuesta_puntuaje);
numero = fclose(fp_func);
return 1; //exitoso
}
int leer_pregunta_todos(DATOS datos_leidos[], char filename_func[]) {
// Devuelve
// 0: no pudo abrior el archivo.
// 1: Se escribio el caracter.
FILE* fp_func;
long numero = 0;
int contador = 0;
if (fopen_s(&fp_func, filename_func, "r") != 0) {
printf("No se pudo abrir el archivo %s", filename_func);
return 0;
}
do {
numero = fscanf(fp_func, "%d %s %s %s ", &(datos_leidos[contador].id),
datos_leidos[contador].pregunta,
datos_leidos[contador].opciones,
datos_leidos[contador].respuesta);
// Imprime el formato leida
printf("\nID: %d", datos_leidos[contador].id);
printf("\nPregunta: %s", datos_leidos[contador].pregunta);
printf("\nOpciones: %s", datos_leidos[contador].opciones);
printf("\nRespuesta: %s", datos_leidos[contador].respuesta);
sscanf(datos_leidos[contador].respuesta, "%c,%d", &(datos_leidos[contador].respuesta_letra), &(datos_leidos[contador].respuesta_puntuaje));
printf("\nRespuesta letra: %c", datos_leidos[contador].respuesta_letra);
printf("\nRespuesta puntaje: %d", datos_leidos[contador].respuesta_puntuaje);
} while (numero != EOF);
numero = fclose(fp_func);
return 1; //exitoso
}
int main()
{
int resultado = 0;
static DATOS examen_matematicas[10];
char nombre_archivo[] = "examen_mat.txt";
printf("\nLee archivo");
resultado=leer_pregunta(examen_matematicas, nombre_archivo);
resultado = leer_pregunta_todos(examen_matematicas, nombre_archivo);
std::cout << "\nfin chao.!\n";
}
Contenido del archivo examen_mat.txt
1
5+3
8,-3,4
a,3
2
2x5
10,2,-5
a,3