El programa salta algunas líneas al intentar leer.
Estoy tratando de leer este tipo de archivo.
0 //Número solitario que representa el turno de un juego
0 0 3 1 2 2
0 1 0 0 3 0
0 2 9 2 0 1
0 3 11 2 3 1
1
4 6 7 8 5 6
3 5 6 7 7 8
1 4 5 6 9 6
4 5 7 6 5 4
pero en mi código, cada vez que intento detectar una nueva línea, el programa toma una línea completamente aleatoria y escribe
while (fgets(line, 255, *save) != NULL) {
printf("La línea dice: %s", line);
if (line[0] == '\n') {
// el puntero es porque el archivo fue pasado a una función
fscanf(*save, "%*[^\n]\n"); // Para saltar esta nueva línea y obtener el entero
fscanf(*save, "%d", &turno); // obtener el número solitario
printf("Turno: %d\n", turno);
getch();
}
fscanf(*save, "%d %d %d %d %d %d", &player, &pilha, &id, &x, &y, &qtd); // Obtener los enteros de cada línea
printf("%d %d %d %d %d %d\n", player, pilha, id, x, y, qtd);
}
davy.ai
Pregunta
¿Cuál es el propósito de la función
fgets
en el código proporcionado?Respuesta
La función
fgets
se utiliza para leer una sola línea del archivo al que apunta el punterosave
. El buclewhile
continua mientrasfgets
pueda leer una línea de como máximo 255 caracteres, y si la línea contiene un carácter de nueva línea como su primer carácter, se salta esa línea utilizandofscanf
y lee el número solitario utilizando tambiénfscanf
. De lo contrario, lee los seis enteros de esa línea utilizandofscanf
e imprime en la consola.