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

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が見つからない時は、教えて!gooで質問しましょう!

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

Qダイナミック出力とは

アンプの出力で「ダイナミック出力」と表記されていているのは
普通の出力とどう違うのでしょうか。

Aベストアンサー

テクノロジー解説/JBL
http://www.harman-japan.co.jp/enjoy/tech/jbl_05.html
「アンプの出力特性」の項より引用です。

アンプの出力表示には、一般に定格出力とダイナミック出力(または実用最大出力)が用いられます。定格出力とは、歪を発生させずに連続して長時間出力し続けることができるパワー値を言います。しかし、音楽信号は音量が常に変化するため、アンプは瞬間的にはこの定格出力以上のパワーを発揮させることができます。このことを考慮して測定されたものがダイナミック出力で、定格出力よりも20%~40%大きな数値を表示できます。

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.コマンドラインパラメ...続きを読む

Qラインドライバ出力とは?

ラインドライバの意味と使い道を教えてください。

ラインドライバ出力で検索すると。
「オープンコレクタ出力をラインドライバ出力へ変換します」 なんてページが出てきます。

RS232やRS422なども絡んでいるみたいなのですが、そこラ変も含めて教えてください。

変換できるツールなんかもありましたら、教えてください。

よろしくお願いします。

Aベストアンサー

制御でオープンCとラインドライバーといえばサーボモーターの制御パルスですね。

サーボモーターを動かすパルスにオープンCを使うと10KHz程度が限界です。
グランドを0Vとしているのでノイズに弱く、トランジスタの限界があるので信号がなまりやすい。
ケーブル長も2mが限界です。
10KHZを超えるとパルスが鈍って行きドライバーアンプがパルスを受け付けなくなります。

ラインドライバーの場合アンプの最高周波数(最近では1MHz)が可能になります。

同じくPLC入力側のエンコーダーパルスにも同じことが言えます。

でも最近のPLCがパルス出力をIOで出せるようになってきているので、10Khz程度までならPLC<->サーボアンプをオープンCで直結して安く上げるのが流行?です。

ラインドライバーをオープンCに変換するものならエムシステム技研の
RPPDパルスアイソレータ

品番 RPPD-JJ1AA1NK
入力 RS422ラインドライバ
出力 オープンコレクタ
電源がAC100Vです。
http://www.m-system.co.jp


ちなみに松下PLCの位置決めユニット(サーボ・パルスモータ用)の一覧
出力が「トランジスタ」がオープンCです。
http://www.naisweb.com/j/pcfaj/pro_jpn/pro_jpn_fp2/idauyat.html


RS422とRS485について
http://home.c06.itscom.net/miya/series3/denso032a.html

上記URLより
テキサス
ドライバIC SN75158 SN75172
レシーバIC SN75175 SN75173

参考URL:http://www.m-system.co.jp

制御でオープンCとラインドライバーといえばサーボモーターの制御パルスですね。

サーボモーターを動かすパルスにオープンCを使うと10KHz程度が限界です。
グランドを0Vとしているのでノイズに弱く、トランジスタの限界があるので信号がなまりやすい。
ケーブル長も2mが限界です。
10KHZを超えるとパルスが鈍って行きドライバーアンプがパルスを受け付けなくなります。

ラインドライバーの場合アンプの最高周波数(最近では1MHz)が可能になります。

同じくPLC入力側のエンコ...続きを読む

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

cout << t << endl;

return 0;

}

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

Aベストアンサー

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

Press Any Key

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

Qテレビのモニター出力とは何でしょう?

32D30というテレビなんですが背面にモニター出力と書かれたビデオ端子と音声端子があります、
これはいったい何に使うものなのでしょうか?
この音声端子をヘッドフォンアンプなどに繋ぐと音声が外部出力できるのでしょうか?
もしそうならヘッドフォンアンプを購入したいのですが・・・。

Aベストアンサー

録画機に外部入力すれば録画出来ますね。(画面に映っているものを出力する)
音声端子は当然アンプにつなぐことも出来ます。

ヘッドフォンアンプ付きのヘッドフォンにも使えます。

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

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

Aベストアンサー

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

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

Q高出力のエンジンとは?

例えば50ccで7.2PSや5PSなら高出力なんでしょうけど4PSや3PSは高出力なのですか。
どこから上が高出力と呼べるのでしょうか。

Aベストアンサー

昔は車の世界では、リッター100馬力が高性能の指標でしたね。
1000ccで100馬力出れば高性能。

原付7.2psをリッターあたりにすると、144馬力/Lも出しています(2サイクルという特殊な事情もありますけど)。

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つ目のソースは、間違いです。
この際捨ててしまいましょう。

QICの絶対最大定格における「出力電圧」とは?

絶対最大定格にいくつかの項目がありますが、
その中の1つに「出力電圧」が定義されています。

出力電圧はICが勝手に?出すものであり、ユーザーが
設計上で守るものではないのでは?と混乱しております。

「入力電圧」なら良く分かります。
端子にその範囲を超えた電圧をかけてはいけない、という
ことで、、。

どなたか「出力電圧」というものが定義されている件で、
それは実際どのようなものか、ユーザーは何を厳守すればよいのか
教えてください。よろしくおねがいします。

Aベストアンサー

> 出力が絶対、常にLOWだという回路構成ならば

そのような回路に意味があるとは思えないし、
もし「+100Vでプルアップしてても常にLow出力だから大丈夫」と
思ってるなら、
電源ON/OFF 時の電源電圧が足りない期間に、ロジック回路が正しく動作できずに
短時間といえど"Low"出力できないことが「有り得る」ので
絶対ではありません。
絶対最大定格は、短時間でも越えれば特性に深刻なダメージを与えるのですから、
1度は耐えたとしても繰り返し起こることにより製品が劣化し
やがて故障につながったりします。

まぁ +100V でプルアップというのは誇張しすぎですけど。

ANo.1 での例のように、高い電圧で動作する回路につながってるとかでも
なければ普通は心配要りません。

ただ、LやCには、電圧の急変がより高い電圧を発生することがあるので、
もしこのような部品が直接つながっているようならば
検証する必要があります。

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ランキング