SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: nsines en Domingo 25 de Mayo de 2008, 07:58

Título: C Ficheros Lectura Escritura
Publicado por: nsines en Domingo 25 de Mayo de 2008, 07:58
El siguiente programa deberia loeer un archivo de 500 registros,
el primer campo es un char, el segundo y el tercero son Int. Lo que tengo que hacer es convertir a string el primer campo int y que quede como tal en el archivo de salida.
Tengo el siguiente codigo:

Código: Text
  1.  
  2. #include<conio.h>
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6. #define MAXREG 500
  7. typedef char string[80];
  8.  
  9. typedef struct {
  10. char palabra[15];
  11. int id;
  12. int Numfotolog;
  13. } archivo;
  14.  
  15. typedef struct {
  16. int reg;
  17. archivo pal[MAXREG];
  18. } fichero;
  19.  
  20. typedef struct {
  21. char palabra[15];
  22. char id[10];
  23. int Numfotolog;
  24. }archivo2;
  25.  
  26. typedef struct {
  27. int reg;
  28. archivo2 pal2[MAXREG];
  29. } fichero2;
  30.  
  31.  
  32. void main (fichero *entrada, fichero2 *salida)
  33. { FILE *fin; FILE *fout;
  34.  int i=0;
  35.  char cadena[100];
  36.  fin=fopen("c:/entrada.txt","r");
  37.  fout=fopen("c:/salida.txt", "w");
  38.  if (fin==NULL)
  39.  { printf("Error abriendo ficheros\n");
  40.  exit (-1);
  41.  }
  42. while (fscanf(fin,"%s",entrada->pal[i]) !=EOF)
  43. { /*fscanf(fin, "%s", entrada->pal[i].palabra);*/
  44.   fprintf(fout,"%s",salida->pal2[i].palabra);
  45.   fscanf(fin,"%d\n",entrada->pal[i].id);
  46. [b]  itoa(entrada->pal[i].id,cadena,10);
  47.   strcpy(salida->pal2[i].id,cadena);[/b]
  48.   fprintf(fout,"%s",salida->pal2[i].id);
  49.   fscanf(fin,"%d",entrada->pal[i].Numfotolog);
  50.   fprintf(fout,"%d",salida->pal2[i].Numfotolog);
  51.  i++;
  52.   }
  53. entrada->reg=i;
  54. salida->reg=i;
  55. fclose (fin);
  56. fclose(fout);
  57. }
  58.  
  59.  
Que me arroja el siguiente error:
2699411829EXE2825726994ght © 1988 Borland Intl.2597246Null pointer assignment Divide error
Abnormal program termination
h§2570526948vide error
Abnormal program termination
h§2870424946m termination
h§3438528@14582-2508801284500000000000


Podrian por favor darme una mano para hacer funcionar mi programa? Gracias!
Título: Re: C Ficheros Lectura Escritura
Publicado por: Eternal Idol en Domingo 25 de Mayo de 2008, 09:50
Depuralo, lee el error que tira el compilador:
Null pointer assignment
Título: Re: C Ficheros Lectura Escritura
Publicado por: nsines en Lunes 26 de Mayo de 2008, 16:51
Estará relacionado al uso del strcpy() ?
al uso del itoa() ???
Por favor ayudneme!!
Gracias.!
Título: Re: C Ficheros Lectura Escritura
Publicado por: fachamix en Martes 27 de Mayo de 2008, 02:40
No soy el mejor programador de C, pero no creo haber visto esto antes en un programa:

void main (fichero *entrada, fichero2 *salida)

mi pregunta seria, ¿como haces para invocar a un programa con parametros de este tipo??

creo que deberias copiarnos bien los resultados de tu compilador.

no se entiende nada
Título: Re: C Ficheros Lectura Escritura
Publicado por: Eternal Idol en Martes 27 de Mayo de 2008, 08:10
Obviamente que lo que indica fachamix - cambiar los parametros de main - es una aberracion, en el primer parametro tendras un numero (argc) y en el segundo un doble puntero a char (argv).