es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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);
}
Tags:  ,

Answer

  1. Avatar for 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 puntero save. El bucle while continua mientras fgets 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 utilizando fscanf y lee el número solitario utilizando también fscanf. De lo contrario, lee los seis enteros de esa línea utilizando fscanf e imprime en la consola.

Comments are closed.