Menú

Mostrar Mensajes

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ú

Mensajes - DickGumshoe

#341
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.
#342
Hola.

Estoy intentando leer las n últimas líneas de un fichero, para, posteriormente, almacenarlas en otro.

Por ejemplo, si mi fichero tiene:

hola
adiós
duda
ficheros
punteros
estructuras


y meto el número 3 por consola, después de introducir el nombre del fichero, me debería leer:

Citarficheros
punteros
estructuras

Y, sin embargo, me lee:

os
punteros
estructuras


Mi código es:

#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);

}

}


¿Qué hago mal?

Muchas gracias.

Saludos.
#343
Muchas gracias, linkingcrk

Durante el día de hoy pensaré si usar finalmente Allegro o SDL.

Saludos.
#344
Muchas gracias, david_BS. Tomaré en cuenta tus consejos.

Saludos.
#345
¡Muchísimas gracias! Esa página la estuve mirando esta mañana, y me pareció muy buena.

Creo que entre el PDF que me pasaste y esa página será de donde aprenda ^^

Saludos.
#346
Bueno, como querer, querría terminar haciendo todo tipo de juegos. Pero para empezar, mejor sería un juego 2D, que es más fácil.

Saludos.
#347
¡Muchísimas gracias STANHMAL y david_BS!

Me habéis ayudado mucho.

El manual que me has pasado es muy completo, seguro que me servirá.

Saludos!
#348
Vale, muchísimas gracias.


A ver si alguien me puede recomendar algún manual sencillo y bueno ^^
#349
Sí, ¿pero podría crear un videojuego sólo con la librería Allegro? No me refiero a combinarlo con SDL, sino a cualquier cosa más que se necesite.

Muchas gracias!
#350
Muchas gracias por la respuesta.

He estado mirando por Internet, y, al parecer, se necesita aprender alguna librería gráfica para C, como Allegro o SDL.

¿Sólo es necesario aprender eso, o necesito algo más?

Muchas gracias.


Saludos.