› Foros › Multiplataforma › Desarrollo
[%s], nombre
EDAD=%i, edad
ALTURA=%.2f, altura
#include <stdio.h>
#include <string.h>
int main()
{
FILE *archivo_entrada, *archivo_salida;
char *contenido_archivo, aux;
long tamano_archivo = 0;
char nombre[32];
int edad;
float altura;
//Obtenemos los datos a insertar
printf("Nombre: "); fgets(nombre,32,stdin); nombre[strlen(nombre)-1] = '\0';
printf("Edad: "); scanf("%i",&edad);
printf("Altura: "); scanf("%f",&altura);
//Abrimos el archivo de plantilla
archivo_entrada = fopen("modelo.txt","r");
if(!archivo_entrada) {
printf(">Error: No se puede abrir el archivo modelo.txt\n");
return(1);
}
//Calculamos el tamaño del archivo
while(!feof(archivo_entrada)) {
fread(&aux,1,1,archivo_entrada);
tamano_archivo++;
}
rewind(archivo_entrada);
//Reservamos memoria suficiente
contenido_archivo = (char *)(malloc(sizeof(char)*tamano_archivo));
//Leemos el contenido del archivo y lo pasamos a una variable
fread(contenido_archivo,tamano_archivo,1,archivo_entrada);
//Cerramos el archivo ahora que ya no lo necesitamos
fclose(archivo_entrada);
//Abrimos el archivo de salida
archivo_salida = fopen("modelonuevo.txt","w");
if(!archivo_salida) {
printf(">Error: No se puede crear el archivo modelonuevo.txt\n");
return(1);
}
//Escribimos en el archivo de salida, utilizando como máscara el contenido del archivo
//que hemos abierto antes
fprintf(archivo_salida,contenido_archivo,nombre,edad,altura);
//Cerramos el archivo de salida
fclose(archivo_salida);
//Liberamos la memoria que habíamos reservado
free(contenido_archivo);
return(0);
}
FILE *archivo_entrada, *archivo_salida;
char *contenido_archivo, aux;
periko_palote escribió:Por cierto, ¿qué diferencias hay entre las variables con * y las que no lo tienen?FILE *archivo_entrada, *archivo_salida;
char *contenido_archivo, aux;
Un saludo.
char nombre[32];
int edad;
float altura;
char *contenido_archivo;
contenido_archivo = (char *)(malloc(sizeof(char)*tamano_archivo));
free(contenido_archivo);