Codificación aprenderaprogramar.com: CU00537F
ESCRIBIR EN ARCHIVOS EN LENGUAJE C
Ya tenemos definido cómo abrimos y cerramos la comunicación con un archivo. Ahora tenemos que ver cómo manipulamos los datos. Para ello nos valemos de las funciones disponibles. En el caso de escritura en archivos tenemos las siguientes.
Función o macro |
Significado y ejemplo aprenderaprogramar.com |
fputc |
Escribe un carácter en el archivo Ejemplo: fputc (‘a’, nombreInternoFichero); |
putc |
Igual que fputc |
fputs |
Escibe una cadena de texto en el archivo Ejemplo: fputs (“cadena”, nombreInternoFichero); |
fprintf |
Escribe como texto a un archivo los datos transformando el formato especificado en texto Ejemplo: fprintf (fichero, "%s %d", cadena1, num); |
Tener en cuenta que los datos a escribir pueden ser “un valor directo” (p.ej. texto entrecomillado), o una variable cuyo contenido representa lo que queremos escribir en el fichero.
Veamos varios ejemplos de código que logran el mismo resultado usando fputs, fputc y fprintf. Escribe el código y comprueba los resultados. Cada vez que se ejecuta el código, el contenido del archivo cursoAF1.txt se borra y se crea de nuevo en el directorio de trabajo (donde esté guardado el proyecto de Code::Blocks).
#include <stdio.h> #include <stdlib.h> // Ejemplo aprenderaprogramar.com int main() { FILE* fichero; fichero = fopen("cursoAF1.txt", "wt"); fputs("Aprender a programar (linea 1)\n", fichero); fputs("requiere esfuerzo (linea 2)\n", fichero); fputs("y dedicacion (linea 3)", fichero); fclose(fichero); printf("Proceso completado"); return 0; } |
#include <stdio.h> #include <stdlib.h> int main() { char cadena1 [] = "Aprender a programar (linea 1)\n"; char cadena2 [] = "requiere esfuerzo (linea 2)\n"; char cadena3 [] = "y dedicacion (linea 3)"; FILE* fichero; fichero = fopen("cursoAF1.txt", "wt"); fputs(cadena1, fichero); fputs(cadena2, fichero); fputs(cadena3, fichero); fclose(fichero); printf("Proceso completado"); return 0; // Ejemplo aprenderaprogramar.com } |
#include <stdio.h> #include <stdlib.h> int main() { int i=0; char cadena1 [] = "Aprender a programar (linea 1)\n"; char cadena2 [] = "requiere esfuerzo (linea 2)\n"; char cadena3 [] = "y dedicacion (linea 3)"; FILE* fichero; fichero = fopen("cursoAF1.txt", "wt"); printf("Longitud de cadena1 es %d \n", sizeof(cadena1)); while (cadena1[i]!='\0') { fputc(cadena1[i], fichero); i++; } i=0; while (cadena2[i]!='\0') { fputc(cadena2[i], fichero); i++; } i=0; while (cadena3[i]!='\0') { fputc(cadena3[i], fichero); i++; } i=0; fclose(fichero); printf("Proceso completado"); return 0; // Ejemplo aprenderaprogramar.com } |
#include <stdio.h> #include <stdlib.h> // Ejemplo aprenderaprogramar.com int main() { int i=3; char cadena1 [] = "Aprender a programar (linea 1)\n"; char cadena2 [] = "requiere esfuerzo (linea 2)\n"; char cadena3 [] = "y dedicacion (linea 3)\n"; FILE* fichero; fichero = fopen("cursoAF1.txt", "wt"); fprintf (fichero, "%s%s%sEscritas %d+1 lineas en fichero", cadena1, cadena2, cadena3, i); fclose(fichero); printf("Proceso completado"); return 0; } |
El resultado de ejecución de cualquiera de los programas anteriores es que se crea un archivo de nombre cursoAF1.txt cuyo contenido será:
Aprender a programar (linea 1) requiere esfuerzo (linea 2) y dedicacion (linea 3) |
En la última versión se añade además otra línea: “Escritas 3+1 lineas en fichero” para demostrar que con fprintf podemos escribir en un fichero datos a partir de un tipo distinto de char, como por ejemplo un dato numérico.
EJERCICIO
Crea un programa que pida 3 números al usuario y guarde 4 líneas en un archivo denominado datos.txt. El contenido de las líneas debe ser el siguiente: las 3 primeras líneas, cada uno de los datos proporcionados. La cuarta línea, el valor medio de los tres datos anteriores.
Ejemplo: el usuario introduce como números 10, 14, 31. El archivo creado deberá contener lo siguiente:
10
14
31
18.333333
Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.
Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.