Red de conocimiento informático - Problemas con los teléfonos móviles - conjunto de búsqueda

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");

}

}