这是一个访问(外围驱动器)打印机的示例代码。但似乎stdprn
无效。我怎样才能让它活着?或者是否有其他合适的方法可以通过打印机打印任何内容。
/*print_it.c-This program preints a listing with line numbers */
#include <stdlib.h>
#include <stdio.h>
void do_heading(char *filename);
int line = 0, page = 0;
int main( int argv, char *argc[] )
{
char buffer[256];
FILE *fp;
if( argv < 2 )
{
fprintf(stderr, "\nProper Usage is: ");
fprintf(stderr, "\nprint_it filename.ext\n" );
return(1);
}
if (( fp = fopen(argc[1], "r" )) == NULL )
{
fprintf( stderr, "Error opening file %s!", argc[1]);
return(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, "%4:\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 );
}
return 0;
}
谢谢。
答案 0 :(得分:1)
看起来stdprn
是1980年代某些MS-DOS编译器中存在的东西。它不是任何C标准的一部分,也不是在现代编译器中实现的。
#ifdef _WIN32
#define PRINTER_DEVICE "PRN"
#else /* assume unix */
#define PRINTER_DEVICE "/dev/lp0"
#endif
FILE *stdprn = fopen(PRINTER_DEVICE, "w");
/* should check for errors if stdprn == NULL */