Autor
|
Tema: Problema al compilar en GCC (bajo Linux) (Leído 7,138 veces)
|
RakNae
|
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 ); }
|
|
|
En línea
|
Informático.
|
|
|
@synthesize
Wiki
Desconectado
Mensajes: 640
Another Brick in the Wall
|
Lo 1º mal que he visto, es un main sin declaración de tipo. int main
|
|
|
En línea
|
|
|
|
RakNae
|
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
|
|
|
En línea
|
Informático.
|
|
|
@synthesize
Wiki
Desconectado
Mensajes: 640
Another Brick in the Wall
|
Pues menudo libro el sistema espera que le metas el tipo a int. Es mas, compilo tu code con gcc y... 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.
|
|
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
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 EDITO: y si no, lée este enlace: http://forums.devshed.com/showthread.php?p=251332
|
|
« Última modificación: 26 Agosto 2010, 01:03 am por Horricreu »
|
En línea
|
|
|
|
nicolas_cof
Desconectado
Mensajes: 348
Into the Wild
|
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.
|
|
« Última modificación: 3 Julio 2010, 18:20 pm por nicolas_cof »
|
En línea
|
|
|
|
RakNae
|
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
|
|
|
En línea
|
Informático.
|
|
|
nicolas_cof
Desconectado
Mensajes: 348
Into the Wild
|
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 O decir que " funciona " queres decir que no tuviste errores/warnings al compilar Salu10.
|
|
|
En línea
|
|
|
|
RakNae
|
Pues en teoría hace esto: Este programa imprime un listado con números de líneaPero namás que despliega un mensaje.
|
|
|
En línea
|
Informático.
|
|
|
|
|
|