2013-09-03 3 views
0

Я пытаюсь напечатать только конкретную строку на линейном принтере. Я пытаюсь запустить этот фрагмент, но ничего не распечатывается. Я также рассматриваю список ожидающих заданий для принтера, и ничего не отображается, когда я запускаю код.Печать текстового текста в C не печатает

Я могу распечатать документы только из Word, поэтому принтер доступен.

Может кто-нибудь намекнуть на то, что проблема может быть?

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
FILE* printer = 0; 
if((printer = fopen("lpt1", "a+")) == NULL) 
{ 
    puts("error opening printer"); 
} 
char* text = "This is a test printing"; 

if ((fprintf(printer, "%s" , text)) < 0 ){ 
    perror("Printing error"); 
} 

fflush(printer); 
fclose(printer); 
return 0; 
} 
+1

Это 'lpt1' какой-то специальный файл? – cnicutar

+0

Нет, это параллельный последовательный порт. Он отображается в диспетчере устройств вместе с COM1 COM2 и т. Д. – Ann

+0

Я думаю, что большинство людей выводят файл, а затем распечатывают его из Windows. Но сделать это за один шаг, вам нужно открыть программу для вывода, а не файл. Это объясняется здесь: http://stackoverflow.com/questions/450865/what-is-the-equivalent-to-posix-popen-in-the-win32-api – dcaswell

ответ

1

Я думаю, вы неправильно понимаете этот код. Представленный вами код записывает строку «Это тестовая печать» в файл в том же каталоге, что и «lpt1».

То, что вы, вероятно, хотят, чтобы выписать что-то вроде «/ DEV/lpt1», и вы должны быть в состоянии проверить это, запустив

echo "this is my printed text" >/dev/lpt1 
+0

Это в окнах. Таким образом, нет/dev. Извините, должен был упомянуть об этом. – Ann

0

Нет, вы не можете писать в порт принтера с помощью fopen() на Windows. Самое близкое, что вы можете получить, - это нереститься cmd.exe и использовать print command, чтобы распечатать то, что вы хотите. Сначала вы можете написать то, что хотите в временном файле, а затем отправить print.