Programa C para imprimir contenido de línea impar de un archivo seguido de contenido de línea par

Prerrequisito: Conceptos básicos del manejo de archivos en C

Dado un archivo de texto en un directorio, la tarea es imprimir primero todo el contenido de las líneas impares del archivo y luego imprimir todo el contenido de las líneas pares.

Ejemplos:

Entrada: archivo1.txt :
Bienvenido
a
GeeksforGeeks
Salida:
Contenido de línea impar:
Bienvenido
GeeksforGeeks
Contenido de línea par:
a

Entrada: archivo1.txt :
1. Esta es la Línea1.
2. Esta es la Línea2.
3. Esta es la Línea 3.
4. Esta es la Línea 4.

Salida:
Contenido de línea impar:
1. Esta es Line1.
3. Esta es la Línea 3.
Incluso el contenido de las líneas:
2. Esta es la Línea2.
4. Esta es la Línea 4.

Acercarse:

  1. Abra el archivo en modo a+ .
  2. Inserte una nueva línea al final del archivo, para que la salida no se vea afectada.
  3. Imprima líneas impares del archivo manteniendo una marca , que no imprime líneas pares del archivo.
  4. Rebobinar el puntero del archivo.
  5. Reiniciar verificación .
  6. Imprima líneas pares del archivo manteniendo una marca , que no imprima líneas impares del archivo.

A continuación se muestra la implementación del enfoque anterior:

// C program for the above approach
  
#include <stdio.h>
  
// Function which prints the file content
// in Odd Even manner
void printOddEvenLines(char x[])
{
    // Opening the path entered by user
    FILE* fp = fopen(x, "a+");
  
    // If file is null, then return
    if (!fp) {
        printf("Unable to open/detect file");
        return;
    }
  
    // Insert a new line at the end so
    // that output doesn't get effected
    fprintf(fp, "\n");
  
    // fseek() function to move the
    // file pointer to 0th position
    fseek(fp, 0, 0);
  
    int check = 0;
    char buf[100];
  
    // Print Odd lines to stdout
    while (fgets(buf, sizeof(buf), fp)) {
  
        // If check is Odd, then it is
        // odd line
        if (!(check % 2)) {
            printf("%s", buf);
        }
        check++;
    }
    check = 1;
  
    // fseek() function to rewind the
    // file pointer to 0th position
    fseek(fp, 0, 0);
  
    // Print Even lines to stdout
    while (fgets(buf, sizeof(buf), fp)) {
  
        if (!(check % 2)) {
            printf("%s", buf);
        }
        check++;
    }
  
    // Close the file
    fclose(fp);
  
    return;
}
  
// Driver Code
int main()
{
    // Input filename
    char x[] = "file1.txt";
  
    // Function Call
    printOddEvenLines(x);
  
    return 0;
}

Archivo de entrada: Archivo de salida:


Publicación traducida automáticamente

Artículo escrito por yashbeersingh42 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *