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 ;)
/* 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 );
}
Lo 1º mal que he visto, es un main sin declaración de tipo.
int main
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 ;)
Pues menudo libro :-\ el sistema espera que le metas el tipo a int. Es mas, compilo tu code con gcc y...
Citar2.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.
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:
FILE *stdprn;
stdprn = fopen("PRN", "wb");
fprintf(stdprn, "Test\f");
fclose(stdprn);
Saludos :P
EDITO: y si no, lée este enlace:
http://forums.devshed.com/showthread.php?p=251332
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.
Muchas gracias por sus respuestas. Si que hay que poner int main()
Muchas gracias y aquí pongo el código que sí que funciona:
/* 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 ;)
Cita de: RakNae en 3 Julio 2010, 18:32 PMMuchas 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.
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:
Aca te dejo un link que te puede interesar...
http://gcc.gnu.org/ml/gcc-help/2002-10/msg00275.html
Salu10.
Tu código no está indentando. Debería de estarlo, es un buen hábito.