#include #include char* InicializarCadena() { int i = 0; char c, *s; s = (char*)malloc(sizeof(char)); while((c = getchar()) != '\n') { s[i] = c; i++; s = (char*)realloc(s, (i + 1)*sizeof(char)); } s[i] = '\0'; return s; } void Modificar(FILE *fp1, FILE *fp2, char c, char *nombre) { char x; while(feof(fp1) == 0) { x = fgetc(fp1); if(c == x) fputc('$', fp2); else fputc(x, fp2); } fputs(nombre,fp2); } int main(void) { FILE *fp1, *fp2; char c, *nombre, *fich1, *fich2; printf("Introduzca el nombre del fichero de entrada: "); fich1 = InicializarCadena(); printf("Introduzca el nombre del fichero de salida: "); fich2 = InicializarCadena(); printf("Introduzca el caracter que quiere modificar: "); scanf("%c", &c); fflush(stdin); printf("Introduzca su nombre: "); nombre = InicializarCadena(); fp1 = fopen(fich1, "r"); if(fp1 == NULL) { printf("ERROR: no se puede abrir el fichero de entrada\n"); exit(1); } fp2 = fopen(fich2, "w"); if(fp2 == NULL) { printf("ERROR: no se puede abrir el fichero de salida\n"); exit(1); } Modificar(fp1, fp2, c, nombre); fclose(fp1); fclose(fp2); system("PAUSE"); return 0; }