c言語でプリンタへ出力する方法を教えてください,
windows98でvisualc++5.0のms-dosを使っています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

すいません。

スキル不足で「VCでMS-DOS」と言うのがわからないんですが、
要するに、DOS窓で動くPGでプリンターに直接印字したい・・・と言うことでしょうか?

DOS上でプリンタに直接印字・・・・・・
それ自体はとても簡単で、方法はふたつあります。

ひとつは、DOSのリダイレクト機能を使って、コマンドラインで
C:¥>prg > prn
などと、「> prn」をつけて、出力先をSTDPRNにします。

ふたつめは、関数で出力先を以下のようにSTDPRNにします。
fprintf(stdprn、”hello world!”);   注意)ストリーム出力です。

それ位簡単なことなんですが・・・・
恐らく、今の環境(WindowsのDOS窓で実行)では、デバイスの書き込みエラーになるでしょう。

何故だか解りますか?

何故なら、プリンターも含めた周辺機器は「ドライバー」が無いと動きませんよね?
あなたのPCには、DOS窓用のDOSのプリンタ・ドライバーが組み込まれていますか?

古いPC-AT用プリンタが手に入れば、出来ないかもしれませんが、
一旦テキスト形式で出力し、Windows上でそのテキストをプリントするのが現実的かもしれません。
それか、せっかくVCを使っているのですから、APIを使えばもっと簡単なのですが・・・・

もう少し、あなたのやりたいことが具体的に解れば、アドバイスできるかもしれません。
困り度=3のようですので、補足していただければ私の出来る限りおつきあいいたします。
    • good
    • 0

ずっと昔、そんなこともしたことあるけど


ちょっと記憶が定かでないのですが
ファイルディスクリプタ4(ファイルポインタでなく)(いわゆる低レベル入出力関数を使う)
で出力できたと思います。

または、ファイル名PRNでやってみてください。

ポートを使う方法もあるかと思いますが。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC言語でMS-DOSプロンプト入力でプリンタに出力する方法は?

OS/Win98でVC++を使ってC言語を学習している初心者です.

C言語のプログラムでMS-DOSプロンプト上のコマンド入力において
プリンタに出力する方法を知りたいです.

たとえばMS-DOSプロンプト上で

C:>[プログラム名][ファイル名(XXX.txt)]

と入力すればプリンターにおいて、入力した[ファイル名(XXX.txt)]が
出力されるようなプログラムを作成したいです.
主にプログラムの流れをどのようにすれば良いか知りたいです.

宜しくお願いします.

Aベストアンサー

補足読みました...
 そうなると、プリンタドライバを使っての印刷になりますので、簡単には出来ません。

 全部書いてしまうと、プログラムを載せる事になってしまうので、主な流れとその時に調べるキーワードを列挙します。
----ここから
1.VC++のプロジェクトの新規作成を選択して、プロジェクトを作成する
 ヒント:沢山あるが、今回の様なプログラムでは、『Win32 Console Application』がお薦め、その後のチェックでは『MFCを使用する』が必須(楽をしたいなら)です。

2.コマンドラインパラメータを取得する
 ヒント:TCHAR* argv[], TCHAR* envp[]あたりを調べる

3.コマンドラインから取得したファイルを調べる
 ヒント:そのファイルが存在するかどうかが重要

4.プリンタのハンドルを作成する
 ヒント:CreateDC この時に、プリンタ名を使用するので、そのプリンタ名の取得がちょっとやっかい

5.コマンドラインからのファイルを開く
6.一行読込む
7.プリンタハンドルに一行書込む
 ヒント:TextOut
8.6-7を繰り返す(改頁等の処理が入るとちょっと面倒)
 ヒント:StartPage/EndPage
9.ファイルを閉じる
10.印刷を終わる
 ヒント:EndDoc
11.ハンドルを解放する
 ヒント:DeleteDC
12.プログラムを終了させる
----ここまで

 ヒントで、関数名になっている物は、その関数名で、ヘルプを検索すれば使用方法が出て来ます。
 ちょっと高いのですが、Windows95 APIバイブル1(9600円)を購入すれば、印刷の仕方が書かれています。参考になると思います。

補足読みました...
 そうなると、プリンタドライバを使っての印刷になりますので、簡単には出来ません。

 全部書いてしまうと、プログラムを載せる事になってしまうので、主な流れとその時に調べるキーワードを列挙します。
----ここから
1.VC++のプロジェクトの新規作成を選択して、プロジェクトを作成する
 ヒント:沢山あるが、今回の様なプログラムでは、『Win32 Console Application』がお薦め、その後のチェックでは『MFCを使用する』が必須(楽をしたいなら)です。

2.コマンドラインパラメ...続きを読む

QMS-VisualC++:コンパイル後実行をするとDOS窓が一瞬だけ現れて消えるのをずっと表示させたいのですが。

cout << t << endl;

return 0;

}

単に変数を画面に表示させるだけのプログラムなのですが、Build後、実行すると一瞬DOS窓が立ち上がり表示された後すぐ消えてしまいます。この表示したDOS窓を持続させたいときはどうすればいいのでしょうか。おそらくものすごく基本的なことなのでしょうが、Linux上でしかC++をしてないのでわかりません。

Aベストアンサー

!マークのボタンを押して実行したら、

Press Any Key

って出てきて止まりませんでしたっけ?

QWindowsXPでVisualC++5.0は可能ですか

HPでWindows2000/Me/XPは対応していないとあるのですが
Meでは特に問題なく動作しました。
XP上でVisualC++5.0を使用されている方はいらっしゃいますか?
何かご存じの方よろしくお願いします。

Aベストアンサー

仮にXPで動作したとしても、5.0では対応していないと公式サイトに記述されていますので、もしXP上で何かあったとしても、サポートは受け付けてもらえません。それを、頭に入れておきましょう。

MeとXPは全く違うカーネルですから、Meで動いたからXPでも動くという考え方は間違ってると思います。

QHello,World が出力できません。 visual C++でのC言語で

#include<stdio.h>
void main()
{
printf("Hello,World!");
}

と入力しているのですが,

LIBCMTD.lib(wincrt0.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
D:\ゲーム作り\プログラム\Hello\Debug\Hello.exe : fatal error LNK1120: 外部参照 1 が未解決です。
ビルドログは "file://d:\ゲーム作り\プログラム\Hello\Debug\BuildLog.htm" に保存されました。
Hello - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

とこんな感じでできません・・

stdioファイルはおれないのでこのファイルがあるHelloってファイルにかえたところ,

#include<Hello.h>
void main()
{
printf("Hello,World!");
}

結果
d:\ゲーム作り\プログラム\hello\hello.cpp(1) : fatal error C1083: include ファイルを開けません。'Hello.h': No such file or directory
ビルドログは "file://d:\ゲーム作り\プログラム\Hello\Debug\BuildLog.htm" に保存されました。
Hello - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

けっきょくはできないんですが,エラー1つ減ってるんで・・

http://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2008express.html

こちらを参考に設定を変更してから本のプログラムをくんでいるので,若干めちゃめちゃになってるかもしれません・・・

ちなみにstdio,Helloと変更したとこをDxLibにしてもstdioのときと変わりません。あとincludのとこに何も打たないでやると
void main()
{
printf("Hello,World!");
}

結果
d:\ゲーム作り\プログラム\hello\hello.cpp(3) : error C3861: 'printf': 識別子が見つかりませんでした
ビルドログは "file://d:\ゲーム作り\プログラム\Hello\Debug\BuildLog.htm" に保存されました。
Hello - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

今度は識別子です・・

できれば本に書いてあるとおりstdioでいきたいのですが,どうしたらいいでしょうか・・

お願いします・・・

何もすることがないのでできれば早めに教えていただきたいのですが・・

#include<stdio.h>
void main()
{
printf("Hello,World!");
}

と入力しているのですが,

LIBCMTD.lib(wincrt0.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
D:\ゲーム作り\プログラム\Hello\Debug\Hello.exe : fatal error LNK1120: 外部参照 1 が未解決です。
ビルドログは "file://d:\ゲーム作り\プログラム\Hello\Debug\BuildLog.htm" に保存されました。
Hello - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不...続きを読む

Aベストアンサー

> できれば本に書いてあるとおりstdioでいきたいのですが,どうしたらいいでしょうか・・

> LIBCMTD.lib(wincrt0.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。

こうなるのは、コンソール・アプリケーションを作成しようとしているのに
コンパイル・オプションがWindowsアプリケーション用だからです。

2つ目、3つ目のソースは、間違いです。
この際捨ててしまいましょう。

Qプログラミング言語Cとプログラミング言語C++

プログラミング言語Cとプログラミング言語C++の違いって何ですか?
あと、プログラミング言語C++についていくつか質問があります。
#include <iostream>
using namespace std;
void main(){
cout << "Hello world!" << endl;
}
このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?
using namespace stdって何ですか?
あと、 cout <<"Hello world!"って何ですか?

Aベストアンサー

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド文字版を宣言するためのものです。
ですので、iostreamヘッダで宣言・定義される関数やクラスを使うだけでは一般的なファイルの操作はできませんし、sprintfやsscanfに相当するものもありません。
また、removeやrenameなど、ストリームとは関係のない操作も含まれていません。

> using namespace stdって何ですか?

「using指令」によって、名前空間stdの中にある名前を大域的名前空間でも使えるようにするものです。
せっかく名前空間を分けているのに、それを無効にしてしまうような機能ですから、安易にusing指令を使うのはお勧めしません。

> あと、 cout <<"Hello world!"って何ですか?

標準出力に対して、文字列"Hello, world!"を出力します。
ちなみに、endlは、改行を出力したあと、バッファにたまった内容を実際に吐き出します(フラッシュします)。単なる改行の出力ではないので要注意です。

C++の仕様は結構大きい方なので、遭遇した記述をひとつひとつ質問していたのではキリがありません。
まずは入門書を一冊読み、わからない用語等については、処理系のリファレンスを読むか、ネットで検索するなどしてください。

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド...続きを読む


人気Q&Aランキング

おすすめ情報