Error en C ¿Compilador erróneo?

Iniciado por iCore, 12 Octubre 2010, 08:03 AM

0 Miembros y 1 Visitante están viendo este tema.

iCore

Hola... antes que nada:

Advertencia: no se han publicado mensajes en este tema por aproximadamente 60 días.
A menos que estés seguro que realmente deseas responder, por favor considera mejor crear un nuevo tema.


Bueno muchachos, me veo en problemas idénticos a ese, pues resulta que estoy leyendo el manual "Aprendiendo C en 21 días", voy en el día 1 pues lo comencé hoy...

Pues resulta que me tope con un ejercicio ¿con errores?, a lo mejor es el compilador que estoy usando pues dudo que sean errores, pues si esta en un libro...

Vale, el manual me dice que la sintaxis que me están enseñando es completamente compatible con el ANSI C, pero... lo que no sé es si este compilador es compatible con ANSI C, estoy usando C++ Builder 6 (Ojo en modo consola, extensión C).

Y con el siguiente código (el que me ponen en el libro), me lanza los siguientes 3 errores:

/* PRINT_IT.C- Este programa imprime un listado con numeros de linea*/

#include <stdio.h>

void do_heading(char *filename);

int line, page;

main(int argv, char *argc[])
{
   char buffer[256];
   FILE *fp;

   if (argv < 2)
   {
       fprintf(stderr, "\nProper usage is: ");
       fprintf(stderr, "\n\nPRINT_IT filename.ext\n");
       exit(1); //Primer error
   }

   if ((fp = fopen(argc[1], "r")) == NULL)
   {
       fprintf(stderr, "Error opening file, %s!", argc[1]);
       exit(1);
   }

   page = 0;
   line = 1;
   do_heading (argc[1]);

   while (fgets(buffer, 256, fp) != NULL)
   {
       if(line % 55 == 0)
               do_heading(argc[1]);
               fprintf (stdprn, "%4d:\t%s", line++, buffer);
   }

   fprintf(stdprn, "\f");
   fclose(fp);
   return 0;
}

void do_heading(char *filename)
{
   page++;

   if (page > 1)
       fprintf(stdprn, "\f");

   fprintf(stdprn, "Page: %d, %s\n\n", page, filename);
}


Pues como ven el primer error me lo da "exit(1)", el cual según Daemon Freedom, no tiene definida su cabecera, pero acertadamente según nicolas_cof: "Para utilizar la funcion exit() tenes que incluir la libreria stdlib.h", lo que haría con gusto de no ser que el manual no me dijera que lo usara, pues me alega que:

"Si tiene errores, asegúrese de haber tecleado el programa correctamente".

El segundo error va con "stdprn" (dos veces me da el mismo error) el cual según nicolas_cof: "el problema es que stdprn no esta en la libreria stdio.h ya que no forma parte del estandar ANSI C." lo que me lleva a pensar que:

¿Estaré usando el compilador adecuado?.

De todos modos logre encontrar solución al segundo y tercer error:

FILE *stdprn;
stdprn = fopen("LPT1", "w");


Pero igual me queda la duda de si estaré o no usando el compilador que debo, porque como ya he dicho antes si el libro me dice que así está bien pues debería estarlo no?.

Aquí os dejo el enunciado completo:

Citar7. Teclee y compile el siguiente programa. Este programa puede usarse para imprimir sus listados. Si se tiene errores, asegúrese de haber tecleado el programa correctamente.

El uso de este programa es PRINT_IT nombre de archivo.ext donde nombre de archivo.ext es el nombre del archivo fuente junto a su extensión. Observe que este programa añade números de línea al listado. (No se preocupe por la longitud de este programa; no espero que lo entienda todavía. Se incluye aquí para ayudarle a comparar las impresiones de sus programas con las que se dan en el libro.)

Luego de tal enunciado me dan el código tal y como se los he dejado arriba.

Por lo que... muchachos ya no se qué hacer, ¿necesito otro compilador? ¿Cuál?... unas cuantas opiniones no vendrían mal... Gracias!.

PD: Como notaron me estoy iniciando en C/C++ así que por favor paciencia jóvenes!

Regards;

do-while

¡Buenas!

Olvidate de ese libro. Tiene elementos ajenos al estandar ANSI C. El la sección de libros y papers, tienes libros de Deitel & Deitel que te vendran bien.

Por cierto, en el libro de "Como programar en C/C++" de Deitel & Deitel (2ª edicion), la parte de C++ tampoco corresponde con el estandar actual. Bajate el de "Como programar en C,C++ y Java", que ese si que sigue los estandares.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Oblivi0n

Si, lo mejor es lo que dice do-while, esos libros de "aprende en 21 dias", son casi mejores para gente que ya sabe algun otro lenguaje de programacion, bajate mejor uno de los que te dice el, y cuando ya tengas algo de practica el Programming in C K&R

iCore

Cita de: do-while en 12 Octubre 2010, 10:57 AM
¡Buenas!

Olvidate de ese libro. Tiene elementos ajenos al estandar ANSI C. El la sección de libros y papers, tienes libros de Deitel & Deitel que te vendran bien.

Por cierto, en el libro de "Como programar en C/C++" de Deitel & Deitel (2ª edicion), la parte de C++ tampoco corresponde con el estandar actual. Bajate el de "Como programar en C,C++ y Java", que ese si que sigue los estandares.

¡Saludos!

Ahh ya le estaba cogiendo gusto al libro :xD; Será mejor comenzar uno de esos dichosos libros, gracias por vuestra ayuda.

Regards;