Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: RakNae en 3 Julio 2010, 17:42 pm



Título: Problema al compilar en GCC (bajo Linux)
Publicado por: RakNae en 3 Julio 2010, 17:42 pm
Hola, estaba intentando compilar este programa pero me da errores con esta instrucción: stdprn

Os pongo el código y ya comentáis. Un saludo y muchas gracias ;)

Código:
/* PRINT_IT.C - Este programa imprime un listado con números de línea */

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

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


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: @synthesize en 3 Julio 2010, 17:50 pm
Lo 1º mal que he visto, es un main sin declaración de tipo.

Código
  1. int main


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: RakNae en 3 Julio 2010, 18:03 pm
Gracias, pero eso no me resuelve el problema. Esto lo he visto en un libro, se supone que es correcto y el compilador no lo detecta como problema (en mi caso GCC). Saludos ;)


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: @synthesize en 3 Julio 2010, 18:08 pm
Pues menudo libro  :-\ el sistema espera que le metas el tipo a int. Es mas, compilo tu code con gcc y...

Citar
2.c:11: warning: return type defaults to ‘int’
2.c: In function ‘main’:

También veo que usas exit() y no has definido su cabecera....

Al compilar poner -Wall? Eso te muestra todos los warnings y errores. Compila tu código y verás.


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: Horricreu en 3 Julio 2010, 18:11 pm
A ver, el problema he entendido es que no te va stdprn. ¿Errores de compilación? ¿Warnings? ¿O simplemente no te imprime? Prueba haciendo esto y me dices que tal:

Código
  1. FILE *stdprn;
  2. stdprn = fopen("PRN", "wb");
  3. fprintf(stdprn, "Test\f");
  4. fclose(stdprn);

Saludos :P

EDITO: y si no, lée este enlace:

Código:
http://forums.devshed.com/showthread.php?p=251332


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: nicolas_cof en 3 Julio 2010, 18:14 pm
RakNae, el problema es que stdprn no esta en la libreria stdio.h ya que no forma parte del estandar ANSI C.

Otra cosa que te recomiendo, es no usar variables globales.

Para utilizar la funcion exit() tenes que incluir la libreria stdlib.h

Salu10.


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: RakNae en 3 Julio 2010, 18:32 pm
Muchas gracias por sus respuestas. Si que hay que poner int main()
Muchas gracias y aquí pongo el código que sí que funciona:
Código:
/* PRINT_IT.C - Este programa imprime un listado con números de línea */

#include <stdio.h>
#include <stdlib.h>

void do_heading(char *filename);

int line, page;

int 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);
}

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 )
{
FILE *stdprn;
stdprn = fopen("PRN","wb");
if( line % 55 == 0 )
do_heading( argc[1] );
fprintf( stdprn, "%4d:\t%s", line++, buffer );
}

FILE *stdprn;
stdprn = fopen("PRN","wb");
fprintf( stdprn, "\f" );
fclose(fp);
return 0;
}

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

FILE *stdprn;
stdprn = fopen("PRN","wb");
if ( page > 1)
fprintf( stdprn, "\f" );

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

Si me podéis decir para que sirve este programa os lo agradecería. Muchas gracias ;)


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: nicolas_cof en 3 Julio 2010, 18:36 pm
Muchas gracias y aquí pongo el código que sí que funciona:

Si me podéis decir para que sirve este programa os lo agradecería. Muchas gracias ;)

Mmmmmmmm no te entiendo, acabas de decir que funciona y no sabes para que sirve :P

O decir que " funciona " queres decir que no tuviste errores/warnings al compilar :huh:

Salu10.


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: RakNae en 3 Julio 2010, 18:40 pm
Pues en teoría hace esto: Este programa imprime un listado con números de línea

Pero namás que despliega un mensaje.  :huh:


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: nicolas_cof en 3 Julio 2010, 18:47 pm
Aca te dejo un link que te puede interesar...

http://gcc.gnu.org/ml/gcc-help/2002-10/msg00275.html

Salu10.


Título: Re: Problema al compilar en GCC (bajo Linux)
Publicado por: leogtz en 3 Julio 2010, 22:09 pm
Tu código no está indentando. Debería de estarlo, es un buen hábito.