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:
aEntrada: 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:
- Abra el archivo en modo a+ .
- Inserte una nueva línea al final del archivo, para que la salida no se vea afectada.
- Imprima líneas impares del archivo manteniendo una marca , que no imprime líneas pares del archivo.
- Rebobinar el puntero del archivo.
- Reiniciar verificación .
- 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