2011-01-27 13 views
16

Tengo un archivo con algunos de los datos del usuario1. Quiero usar el mismo archivo para user2 borrando el contenido del archivo.¿Cómo borro todo el contenido de un archivo en C?

Mi idea es que cuando llega un nuevo usuario, los datos del usuario anterior deben ser claras y el mismo archivo deben estar listos para el nuevo usuario.

Respuesta

31

Como dijo @stefan usando fopen() con el modo "w" va a hacer el trabajo para usted. Cuando abre un archivo con la marca "w", crea un archivo vacío para escribir. Si ya existe un archivo con el mismo nombre, su contenido se borra y el archivo se trata como un archivo nuevo vacío.

Si el archivo ya está abierto, puede usar la función freopen() de stdio.h con el modo "w", ya que primero cerrará el archivo y luego lo volverá a abrir para borrar todo lo que haya en el archivo anteriormente.

14

con fopen(filename, flag) simplemente abrirlo con la bandera = "w" o "wb" y se borrará

+0

Gracias Stefan, pero quiero borrar el archivo FUERZA dijo (explícitamente) – mujahid

+1

eso es lo que Stefan. – Rozuur

+0

ok gys !! pero durante el prog. ejecutivo abriendo/cerrando (añadiendo) muchas veces. QUIERO LIMPIAR EL ARCHIVO SÓLO CUANDO OCURRE ALGUNA CONDICIÓN. – mujahid

3

Hay dos maneras:

1. fd=open(filename,O_RDONLY | O_WRONLY | O_TRUNC); 


2. [cat /dev/null > filename] for BASH. It can be directly used in c program using [system()] system call. 

    system("cat /dev/null > filename"); 
+0

FYI: el segundo es Bourne shell, no C. – michaelb958

+0

Además, el segundo puede ser reemplazado con una sola llamada para 'truncar() ', que reemplaza al gato inútil. – Hasturkun

+1

De 'man 2 open':' A diferencia de otros valores que pueden especificarse en flags, los valores del modo de acceso O_RDONLY, O_WRONLY y O_RDWR no especifican bits individuales. Más bien, definen los dos bits de banderas de bajo orden, y se definen respectivamente como 0, 1 y 2. En otras palabras, la combinación O_RDONLY | O_WRONLY es un error lógico, y ciertamente no tiene el mismo significado que O_RDWR. Por lo tanto, especificando 'O_RDONLY | O_WRONLY', está configurando los 2 bits de bajo orden en 3 en lugar de 2. El uso de 3 está definido por la implementación y varía entre los sistemas. –

8
fclose(fopen("file.txt", "w")); 

por qué esto funciona:

escritura: Crear un archivo vacío para operaciones de salida. Si ya existe un archivo con el mismo nombre, su contenido se descarta y el archivo se trata como un nuevo archivo vacío.

(cita de http://www.cplusplus.com/reference/cstdio/fopen/)

Cuestiones relacionadas