elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  ejercicio 122 de C: pido ayuda -error en plena ejecución-
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ejercicio 122 de C: pido ayuda -error en plena ejecución-  (Leído 5,046 veces)
Kr3c13nt3

Desconectado Desconectado

Mensajes: 15


Ver Perfil
ejercicio 122 de C: pido ayuda -error en plena ejecución-
« en: 7 Marzo 2008, 19:22 pm »

Hola:

Como verán soy n00b en este foro ;D y ayer me interesé en coger uno de los ejercicios de C y me gustó uno en particular que maneja ficheros:

Enunciado:
  Escribir un programa que solicite palabras y las agrege a un fichero llamado    c:\diccionario de forma que luego se puedan consultar las palabras una a  una.

Bueno ....para ver si el programa efectivamente guardaba las palabras, modifique el ejercicio y en vez de consultar, quería mostrar las palabras guardadas. El problema, que usando Dev-c++(S.O. Windows XP), no arroja errores o advertencias, pero a la hora de ejecutar el programa, arroja un error  algo así como..."este programa ha cometido un error y debe cerrarse".  Supongo que es un error con punteros.

Código:
#include <stdio.h>
#include <stdlib.h>
#define max 10

int main(){
    int i;
    char ifilename[] = "diccionario.txt";
    char palabra[20], idChar;
   
    FILE  *ifp; //apuntador a archivo
    ifp = fopen(ifilename, "a+");// abre el archivo para add info.
                               //Si no existia se crea uno nuevo.
   
   
     if(ifp==NULL){
                   printf("Error al abrir fichero diccionario.txt");
                   exit(0);
                     } 
 
  for(i=0;i<max;i++){                                           
    printf("Ingrese una palabra a continuacion:");
    scanf("%s", &palabra);
    fprintf(ifp, "%s\n",  palabra);
                 }                 
  fclose(ifp);
   
       ifp = fopen(ifilename, "r");// abre el archivo para add info.
                               //Si no existia se crea uno nuevo.
   
   
     if(ifp==NULL){
                   printf("Error al abrir fichero diccionario.txt");
                   exit(0);
                     }   
     while(fscanf(ifp, "%s",  &idChar) != EOF)//mientras no llegue al fin
           {
                          printf("%s", idChar);     //de archivo se escriben
                                 }                   //por pantalla los datos.
                                                     
   
    fclose(ifp); //cierra el archivo

   return 0;
}

Si alguien se la puede con el ejercicio, por favor, responder. :rolleyes:


En línea

Flakito81


Desconectado Desconectado

Mensajes: 519



Ver Perfil
Re: ejercicio 122 de C: pido ayuda -error en plena ejecución-
« Respuesta #1 en: 7 Marzo 2008, 22:40 pm »

Pues básicamente q idChar no es un array, estas intentando meter una cadena de caracteres en una variable que solo puede almacenar un caracter. Como observación te digo que cuando lees con scanf una variable del tipo string (array de caracteres (char *vble/char vble[20)) no tienes que ponerle el &, ya que el propio nombre de la variable es un puntero al primer elemento.

Suerte!


En línea

Kr3c13nt3

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: ejercicio 122 de C: pido ayuda -error en plena ejecución-
« Respuesta #2 en: 8 Marzo 2008, 18:29 pm »

gracias por la observación flakito81, pero se sigue cayendo.... :¬¬

Código:
#include <stdio.h>
#include <stdlib.h>
#define max 10

int main(){
    int i;
    char ifilename[] = "diccionario.txt";
    char palabra[20];
    char idChar;
   
    FILE  *ifp; //apuntador a archivo
    ifp = fopen(ifilename, "a+");// abre el archivo para add info.
                               //Si no existia se crea uno nuevo.
   
   
     if(ifp==NULL){
                   printf("Error al abrir fichero diccionario.txt");
                   exit(0);
                     } 
 
  for(i=0;i<max;i++){                                           
    printf("Ingrese una palabra a continuacion:");
    scanf("%s", &palabra);
    fprintf(ifp, "%s\n",  palabra);
                 }                 
  fclose(ifp);
   
       ifp = fopen(ifilename, "r");// abre el archivo para add info.
                               //Si no existia se crea uno nuevo.
   
   
     if(ifp==NULL){
                   printf("Error al abrir fichero diccionario.txt");
                   exit(0);
                     }   
     while(fscanf(ifp, "%s",  idChar) != EOF)//mientras no llegue al fin
           {
                          printf("%s", idChar);     //de archivo se escriben
                                 }                   //por pantalla los datos.
                                                     
   
    fclose(ifp); //cierra el archivo

   return 0;
}
En una de esas..encuentre la respuesta...
En línea

GroK


Desconectado Desconectado

Mensajes: 681


...I have become comfortably numb...


Ver Perfil
Re: ejercicio 122 de C: pido ayuda -error en plena ejecución-
« Respuesta #3 en: 8 Marzo 2008, 19:31 pm »

Sigues teniendo varios fallos del estilo de los que te dijo Flakito81, mira te pongo aqui el codigo corregido y con los errores marcados:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define max 10
  4.  
  5. int main (void)
  6. {
  7.  
  8.   int i;
  9.   char ifilename[] = "diccionario.txt";
  10.   char palabra[20];
  11.   char idChar;
  12.  
  13.   FILE *ifp;                                  // apuntador a archivo
  14.   ifp = fopen (ifilename, "a+");   // abre el archivo para add info.
  15.                                                    //Si no existia se crea uno nuevo.
  16.  
  17.   if (ifp == NULL)
  18.   {
  19.      printf ("Error al abrir fichero diccionario.txt\n");
  20.      exit (1);
  21.   }  
  22.  
  23.   for (i = 0; i < max; i++)
  24.   {                                          
  25.      printf ("Ingrese una palabra a continuacion:");
  26.      scanf ("%s", palabra);   // FALLO: sobra el ampersand (&)
  27.      fprintf (ifp, "%s\n", palabra);
  28.   }                
  29.   fclose (ifp);
  30.  
  31.   ifp = fopen(ifilename, "r");
  32.   if (ifp == NULL)
  33.   {
  34.      printf ("Error al abrir fichero diccionario.txt\n");
  35.      exit (1);
  36.   }
  37.   while (fscanf (ifp, "%s", palabra) != EOF)  // FALLO: no va "idChar" sino "palabra", no puedes meter
  38.   {                                                                // un array de caracteres en un char
  39.      printf("%s\n", palabra); // FALLO: Idem
  40.   }
  41.   fclose(ifp); // Cierra el archivo
  42.   return 0;
  43. }

Saludos
En línea

"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant

Kr3c13nt3

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: ejercicio 122 de C: pido ayuda -error en plena ejecución-
« Respuesta #4 en: 8 Marzo 2008, 20:26 pm »

gracias.... ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines