2013-07-19 5 views
0

Это пример кода, который будет обращаться к принтеру (периферийному диску). Но, похоже, stdprn не работает. Как я могу сделать его живым? Или есть другой подходящий способ печати чего-либо принтером.Доступ к принтеру через код C

/*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; 
} 

спасибо.

+1

если (страница> 1); ? –

+0

Возможный дубликат [C ошибок компиляции при использовании stdprn] (http://stackoverflow.com/questions/12052484/c-compilation-errors-on-using-stdprn) – Joni

+0

К сожалению, это была опечатка. @ René Kolařík – Maruf

ответ

0

Похоже, что stdprn - это то, что существовало в некоторых компиляторах MS-DOS в 1980-х годах. Он не является частью какого-либо стандарта 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 */ 
+0

Если это так backdated Тогда есть ли какой-либо подходящий метод печати чего-либо принтером? @Joni – Maruf

+0

Нет портативных, вам придется использовать API-интерфейсы операционной системы. Если принтер подключен к аппарату физически (а не к сетевому принтеру), открывая устройство принтера и записывая обычный текст, он может «работать», но вы не сможете устанавливать шрифты или печатать графику. – Joni

+0

"** Если принтер подключен к аппарату физически (а не к сетевому принтеру), откройте устройство принтера и напишите обычный текст, чтобы он« мог »работать **« просто скажите мне, как это можно сделать. Мне просто нужно напечатать несколько строк. – Maruf

Смежные вопросы