Muchas gracias por tu ayuda. Ya he editado el código para que salga bien.
A ver si alguien nos puede explicar por qué pasa eso...
Saludos.
A ver si alguien nos puede explicar por qué pasa eso...
Saludos.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúhola
adiós
duda
ficheros
punteros
estructuras
Citarficheros
punteros
estructuras
os
punteros
estructuras
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int *V;
int lineas;
}Estructura;
char* InicializarCadena();
Estructura Contar(FILE *fp);
void Almacenar(FILE *fp1,FILE *fp2,Estructura aux,int n);
int main (){
FILE *fp1;
FILE *fp2;
int n;
char *fich,c;
Estructura aux;
printf("Introduzca el nombre del fichero: ");
fich=InicializarCadena();
printf("Introduce un numero: ");
scanf("%d", &n);
fp1=fopen(fich, "r");
fp2=fopen("Trabajo.txt", "w");
if(fp1==NULL){
printf("ERROR");
system("pause");
exit(1);
}
aux=Contar(fp1);
Almacenar(fp1,fp2,aux,n);
free(aux.V);
free(fich);
fclose(fp1);
fclose(fp2);
system("pause");
}
char* InicializarCadena(){
int i = 0;
char c, *cad;
cad = (char*) malloc(sizeof(char));
while((c = getchar())!= '\n'){
cad[i] = c;
i++;
cad = (char*)realloc(cad, (i + 1)*sizeof(char));
}
cad[i] = '\0';
return cad;
}
Estructura Contar(FILE *fp){
int i=0;
Estructura aux;
char c;
aux.lineas=0;
aux.V=(int*) malloc(sizeof(int));
while(feof(fp)==0){
c=fgetc(fp);
i++;
if(c=='\n'){
aux.V=(int*) realloc(aux.V,(aux.lineas+1)*sizeof(int));
aux.V[aux.lineas]=i;
aux.lineas++;
}
}
aux.lineas++;
return(aux);
}
void Almacenar(FILE *fp1,FILE *fp2,Estructura aux,int n){
char c;
fseek(fp1,aux.V[aux.lineas-n],SEEK_SET);
while(feof(fp1)==0){
c = fgetc(fp1);
fputc(c,fp2);
printf("%c", c);
}
}