Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - Schu

#1
General Programadores / Duda De Principiante En C/c++
28 de Agosto de 2005, 08:48:00 PM
 Pues la verdad es que sí que me funciona lo de apuntar a la posición que me interesa y modificarla luego  :huh:
Sea como sea el caso es que ahora todo funciona bien  :D  
#2
General Programadores / Duda De Principiante En C/c++
28 de Agosto de 2005, 06:10:32 PM
 Gracias Ray por tu sugerencia, simplemente con incluir esa línea de código y con otros dos pequeñísimos retoques la función ya hace lo que quiero.
Otra cosa más que se aprende :D
Saludos
#3
General Programadores / Duda De Principiante En C/c++
28 de Agosto de 2005, 05:06:47 PM
 Entonces, si he entendido bien, lo que debo hacer es no sólo escribir la entrada que quiero modificar sino que también he de volver a escribir las ya existentes.
Por otra parte, lo que no acabo de comprender es por qué me modifica siempre la primera entrada pero muestra las demás tal y como las tenía antes si como dices, al hacer un fopen("...","r+") te cargas todo lo que había antes.
Saludos y perdón por la torpeza jeje
#4
General Programadores / Duda De Principiante En C/c++
28 de Agosto de 2005, 04:34:51 PM
 Saludos a todos, escribo para plantear una duda como principiante que soy en este mundillo, enlazando casi casi con el post anterior :).
El caso es que me decidí por aprender C/C++ (estoy siguiendo un libro de Anaya Multimedia titulado Manual imprescindible de C/C++ que me viene muy bien) y estoy haciendo una pequeña base de datos de pilotos de F1 con estructuras estáticas (hay que ir poco a poco :D). Mi problema viene a la hora de editar una entrada de la base de datos, que no consigo que modifique la que yo quiero, ya que siempre escribe sobre la primera entrada.
Lo que hago es pedir el nombre del piloto en cuestión y si lo encuentra vuelvo a pedir los datos (inserto el código para más información):

/*Funcion que permite modificar los datos de 1 piloto*/
void EditarPiloto(struct ficha &piloto)
{
    char nombre_piloto[40];
    int i = 0;
    struct ficha FichaPiloto[300];

    /*Abrimos el archivo*/
    FILE *archivo;
    archivo = fopen("PilotManager.txt","r+");

    /*Pregunto por el nombre del piloto que hay que editar*/
    printf("Escribe el nombre del piloto que quieres editar: ");
    gets(nombre_piloto);

    /*Si no se puede abrir el archivo doy un mensaje de aviso*/
    if(archivo == NULL)
    {
               printf("ERROR: PilotManager.txt no se ha podido abrir\n");
    }
    else
    {
               /*No salimos del bucle mientras no se lea todo el archivo o bien,
                 mientras no se encuentren coincidencias con el nombre metido*/
               fread(&FichaPiloto[i],sizeof(FichaPiloto[i]),1,archivo);
               while( (feof(archivo) == 0) && (strcmp(nombre_piloto,FichaPiloto[i].nombre) != 0) )
               {
                      i++;
                      fread(&FichaPiloto[i],sizeof(FichaPiloto[i]),1,archivo);
               }
               fclose(archivo);
               archivo = fopen("PilotManager.txt","r+");
               /*Si se encuentra el nombre volvemos a meter todos los datos*/
               if(strcmp(nombre_piloto,FichaPiloto[i].nombre) == 0)
               {


                      cout << "Nombre del piloto?: ";
                      gets(FichaPiloto[i].nombre);


                      cout << "Escuderia / Motor: ";
                      gets(FichaPiloto[i].escuderia);

                      cout << "Edad?: ";
                      cin >> FichaPiloto[i].edad;

                      cout << "Titulos mundiales?: ";
                      cin >> FichaPiloto[i].titulos;

                      cout << "GPs disputados?: ";
                      cin >> FichaPiloto[i].GPs_disputados;

                      cout << "GPs ganados?: ";
                      cin >> FichaPiloto[i].GPs_ganados;

                      cout << "Pole Positions?: ";
                      cin >> FichaPiloto[i].poles;

                      cout << "\n\n\n";
                      fwrite(&FichaPiloto[i],sizeof(FichaPiloto[i]),1,archivo);


               }
               else
               {
                      cout << "ERROR: " << nombre_piloto << " no esta en la base de datos\n";

               }
               fclose(archivo);
    }
}

La verdad es que probé tantas cosas que ya no sé si eso está bien. Está claro que se me escapa algo y por más que consulto el libro etc, no acierto a saber qué es. A ver si alguien me podría ayudar y gracias por adelantado.

                                               Saludos
#5
General Programadores / Lenguaje Para Empezar
09 de Agosto de 2005, 08:01:24 PM
 Gracias por los consejos :) En realidad el año pasado fui a un cursillo de C, pero sólo durante un par de mesesy más que nada fue para ir viendo como va ésto y tal. Por lo que me habéis dicho supongo que empezaré con algo como Pascal o C++. Si tengo alguna duda postearé aquí sin dudarlo  :D
Saludos !
#6
General Programadores / Lenguaje Para Empezar
09 de Agosto de 2005, 02:54:05 AM
 Buenas me acabo de registrar en estos foros pues soy nuevo en este mundillo, y me gustaría que me aconsejarais sobre qué es mejor para empezar en esto, es decir, lenguajes principales y demás cosas de interés.
Muchas gracias de antemano y saludos a todos  :)  





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.