Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过C代码访问打印机_C_Printing - Fatal编程技术网

通过C代码访问打印机

通过C代码访问打印机,c,printing,C,Printing,这是访问(外围驱动器)打印机的示例代码。但它似乎不起作用。我怎样才能让它活着?或者是否有其他合适的方法通过打印机打印任何内容 /*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

这是访问(外围驱动器)打印机的示例代码。但它似乎不起作用。我怎样才能让它活着?或者是否有其他合适的方法通过打印机打印任何内容

/*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;
}
/*print\u it.c-此程序预先输入带有行号的列表*/
#包括
#包括
void do_标题(字符*文件名);
int line=0,page=0;
int main(int argv,char*argc[])
{
字符缓冲区[256];
文件*fp;
如果(argv<2)
{
fprintf(stderr,“\n正确用法为:”;
fprintf(stderr,“\n打印文件名.ext\n”);
申报表(1);
}
if((fp=fopen(argc[1],“r”)==NULL)
{
fprintf(stderr,“打开文件%s时出错!”,argc[1]);
申报表(1);
}
page=0;
直线=1;
do_标题(argc[1]);
while(fgets(缓冲区,256,fp)!=NULL)
{
如果(第%55行==0)
do_标题(argc[1]);
fprintf(stdprn,“%4:\t%s”,行++,缓冲区);
}
fprintf(stdprn,“\f”);
fclose(fp);
返回0;
}
无效do_标题(字符*文件名)
{
page++;
如果(第1页)为fprintf(标准文本,“f”);
fprintf(stdprn,“第%d页,%s\n\n”,第页,文件名);
}
返回0;
}

谢谢。

看起来
stdprn
是20世纪80年代一些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 */

抱歉,这可能是一个打字错误。@ReneéKolaříkIf它是如此落后,那么有没有合适的方法用打印机打印任何东西@JoniNo便携式的,你必须使用操作系统API。如果打印机物理连接到机器(不是网络打印机),则打开打印机设备并向其写入纯文本“可能”起作用,但您将无法设置字体或打印图形。“如果打印机物理连接到机器(不是网络打印机),则打开打印机设备并向其写入纯文本“可能”起作用”告诉我怎么做。我只需要打印几行就行了。我想可能还有其他解决办法。谢谢你的回复。:)@乔尼