Si desea truncar el archivo de tamaño cero, puede fopen
con el "w"
bandera:
FILE *fh = fopen("file.txt","w");
if (fh != NULL) fclose(fh);
para truncar a un tamaño específico en C estándar, puede hacer esto con una transferencia/cambiar el nombre de la solución, algo así como:
FILE *finp = fopen ("inp.txt", "rb"); // should check for NULLs
FILE *fout = fopen ("out.txt", "wb");
size_t sz = 100000; // 100,000 bytes
char *buff = malloc (sz); // should check for NULL
sz = fread (buff, 1, sz, fin); // should check for errors
fwrite (buff, 1, sz, fout);
free (buff);
fclose (fin);
fclose (fout);
rename ("out.txt", "inp.txt); // should check for error
Por supuesto, si usted tiene acceso a las cabeceras de Win32 y Libra (y creo que MinGW le da esto), puede usar SetEndOfFile()
, ya que lo hace en su lugar, en lugar de tener que crear un nuevo archivo y luego cambiarle el nombre.
Eso significa usar E/S de archivo basado en el controlador de Windows en lugar de C FILE*
, pero, si se limita a Windows de todos modos, puede que no importe. Si desea la portabilidad, por otro lado, necesitará una solución basada en C estándar, como la solución de transferencia/cambio de nombre anterior.
¿Quisiste decir truncar en una posición específica o truncar a un archivo vacío? – paxdiablo
posible ** duplicado ** de ** [¿Cómo truncar un archivo en C?] (Http://stackoverflow.com/a/873653/2432317) ** –