conjunto de búsqueda
Significa señalar el puntero del archivo al principio del archivo
fseek
Nombre de la función: fseek
Función: Reubicar el puntero de archivo en la secuencia
Uso: int fseek(FILE *stream, long offset, int fromwhere);
Descripción: la función establece la posición de la secuencia del puntero del archivo. Si la ejecución es exitosa, la secuencia apuntará a una posición desplazada desde dónde según desde dónde. Si la ejecución falla (por ejemplo, el desplazamiento excede el tamaño del archivo en sí), la posición señalada por la secuencia no cambiará.
Valor de retorno: si tiene éxito, devuelve 0; de lo contrario, devuelve otros valores.
fseek coloca el puntero de posición del archivo al que hace referencia la secuencia en la ubicación de bytes calculada por desplazamiento.
Ejemplo de programa:
#include tamaño de archivo largo(FILE *stream); int main(void) { ARCHIVO *stream; stream = fopen("MYFILE.TXT", "w+"); fprintf(stream, "Esto es una prueba"); printf("Tamaño de archivo de MYFILE.TXT es %ld bytes\n", tamaño de archivo(flujo)); fclose(flujo); devuelve 0; } tamaño de archivo largo(FILE *stream) { curpos largos, longitud; curpos = ftell(flujo); fseek(stream, 0L, SEEK_END); longitud = ftell(stream); fseek(stream, curpos, SEEK_SET); retorno longitud ; } int fseek( FILE *stream, long offset, int origin ); El primer parámetro stream es el puntero del archivo El desplazamiento del segundo parámetro es el desplazamiento, un número entero representa un desplazamiento positivo y un número negativo representa un desplazamiento negativo El origen del tercer parámetro establece el desplazamiento del archivo, con valores posibles es: SEEK_CUR. , SEEK_END o SEEK_SET SEEK_SET: Inicio del archivo SEEK_CUR: Posición actual SEEK_END: Fin del archivo Dónde SEEK_SET , La suma de SEEK_CUR y SEEK_END es 0, 1 y 2 en secuencia. En resumen: fseek(fp,100L,0); mueve el puntero fp a 100 bytes desde el comienzo del archivo en; fseek(fp,100L,1); Mueva el puntero fp a 100 bytes de la posición actual del archivo; fseek(fp, 100L,2); Mover fp El puntero regresa a 100 bytes desde el final del archivo. Ejemplo de uso: #include #define N 5 typedef struct Student { sno largo; nombre de char[10]; puntuación flotante[3]; } STU; vacío fun(char *nombre de archivo, STU n) { ARCHIVO *fp; fp = fopen(nombre de archivo, "rb+"); fseek(fp, -1L*tamañode(STU),SEEK_END); fwrite(&n, tamañode(STU), 1, fp); fclose(fp) ; } void main()/*Modificar y sobrescribir los datos del último estudiante*/ { STU t[N ] ={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88}, {10003,"LiSi", 85, 70, 78 } , {10004,"FangFang", 90, 82, 87}, {10005,"ZhangSan", 95, 80, 88}}; STU n={10006 , "ZhaoSi", 55, 70, 68}, ss[N]; int i,j; ARCHIVO *fp; fp = fopen("estudiante.dat", " wb"); fwrite(t, sizeof(STU), N, fp); fclose(fp); fp = fopen(" estudiante .dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); printf ("\nLos datos originales:\n\n"); for (j=0; j { printf ( "\nNo: %ld Nombre: %-8s Puntuaciones: ",ss[j].sno, ss[j].name); for (i=0; i<3; i++) printf ("%6.2f ", ss[j].score[i]); printf("\n"); } divertido ( "student.dat", n); printf("\nLos datos después de modificar:\n\n"); fp = fopen("student.dat", " rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0 ; j { printf("\nNo: %ld Nombre: %-8s Puntuaciones: ",ss[j].sno, ss[j] . nombre); para (i=0; i<3; i++) prin tf("%6.2f ", ss[j].score[i]); printf("\n"); } }