Desde un archivo dado (por ejemplo, input.txt), lea el enésimo byte alternativo y escríbalo en otro archivo con la ayuda de «lseek».
lseek (llamada al sistema C) : lseek es una llamada al sistema que se utiliza para cambiar la ubicación del puntero de lectura/escritura de un descriptor de archivo. La ubicación se puede establecer en términos absolutos o relativos.
Definición de función
off_t lseek(int fildes, off_t offset, int de dónde);
Campo Descripción
int fildes: el descriptor de archivo del puntero que se va a mover
fuera_t offset: el desplazamiento del puntero (medido en bytes).
int wherece : el método en el que se interpretará el desplazamiento
(rela, absoluto, etc.). Valor legal r esta variable se proporcionan al final.
valor de retorno: Devuelve el desplazamiento del puntero (en bytes) desde el
principio del archivo. Si el valor devuelto es -1,
entonces hubo un error al mover el puntero.
Por ejemplo, digamos que nuestro archivo de entrada es el siguiente:
// C program to read nth byte of a file and // copy it to another file using lseek #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> void func(char arr[], int n) { // Open the file for READ only. int f_write = open("start.txt", O_RDONLY); // Open the file for WRITE and READ only. int f_read = open("end.txt", O_WRONLY); int count = 0; while (read(f_write, arr, 1)) { // to write the 1st byte of the input file in // the output file if (count < n) { // SEEK_CUR specifies that // the offset provided is relative to the // current file position lseek (f_write, n, SEEK_CUR); write (f_read, arr, 1); count = n; } // After the nth byte (now taking the alternate // nth byte) else { count = (2*n); lseek(f_write, count, SEEK_CUR); write(f_read, arr, 1); } } close(f_write); close(f_read); } // Driver code int main() { char arr[100]; int n; n = 5; // Calling for the function func(arr, n); return 0; }
Este artículo es una contribución de Kishlay Verma . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA