約 64,390 件
https://w.atwiki.jp/dentu-os/pages/24.html
I/Oと割り込み プロセッサが制御することのできるI/Oデバイスには様々な種類がある。 どのようなデバイスも次の3種類のレジスタを持つ。 制御レジスタ I/Oデバイスに対する指令を書き込む。I/Oデバイスはこのレジスタの内容に従って動作する。 状態レジスタ 入出力装置の状態を表すレジスタである。プロセッサはこのレジスタの内容でI/Oデバイスの状態を判断する データレジスタ I/Oデバイスとプロセッサ間でやりとりするデータを書き込む。 例 入力装置の場合は入力データ,出力装置の場合は出力データ プロセッサにI/Oデバイスの動作が完了したことを伝える仕組みとしては 次のような仕組みがある。 ポーリング プロセッサが入出力装置を監視し続ける 割り込み 入出力装置がプロセッサに「割り込み信号」を送る。 割り込みの実装 割り込みはハードウエアで実現されている。入出力装置からプロセッサ へはIRQ(割り込み要求線)と呼ばれる配線があり、プロセッサはIRQを 一つの命令の実行が終わる毎に確認し、割り込みが着ていれば割り込みハンドラと呼ばれるコードを呼び出す。 例;キーボード入力の場合 キーを入力するとデータレジスタにキーコードが格納され、割り込みが 起こる。プロセッサはデータレジスタを参照し、キーコードを読み出す 多重割り込み、割り込みベクタ 割り込み番号に対応する割り込みハンドラのアドレスを保持する テーブルを割り込みベクタと呼ぶ。割り込みベクタはメモリ上に存在し、そのアドレスは割り込みベクタレジスタに保持される。 IRQは複数存在するために同時に割り込みが起こる場合もある。 そのために割り込みには優先度が存在し、優先度の高い割り込みの ハンドラから順に実行される。これを多重レベル割り込みと呼ぶ。 優先度の低い割り込みを割り込み禁止にすることをマスクするという。 例外 不正な命令や不正なメモリアクセス、不正な除算を行った時にも割り込みが発生する。これを例外と呼ぶ。 データの転送 プログラムI/O方式 プロセッサと入力装置の間でデータの転送を行う。プロセッサ自身が データを入出力装置に転送し、制御レジスタを書き換える DMA方式 入出力装置がメモリとの間で直接データを転送する。プロセッサが仲介しないために高速である。DMAによるデータの転送完了は割り込みによって通知される。 入出力装置への動作依頼 入出力装置を指定する方法として次の2つがある。 I/Oポート I/Oポートと呼ばれる領域に入出力装置が張り付いている。専用命令を用いてアクセスする。x86ではin命令,out命令 メモリマップドI/O 入出力装置内のレジスタがメモリの一部に張り付いているかのように 動作する。メモリを読み書きすることでレジスタの読み書きを行うことができる。 デバイスドライバ デバイスの種類は豊富であるためにOSがすべてのデバイスのための制御ソフトを用意することはできない。よってデバイスドライバと呼ばれる各デバイスメーカーが開発する専用のソフトを使う。デバイスドライバはカーネルモードで動作するためにバグが残っていると致命的なことになる。
https://w.atwiki.jp/vwrr/pages/385.html
TOP VectorWorks 活動 データ 広場 駆込寺 2D 3D RenderWorks ワークシート スクリプト プラグイン 他のアプリとの連携 入出力 入出力 入力 スキャナー デジカメ 出力 プリンター プロッタ データ便 ファイルオクール 宅ふぁいる便 デジタルバイク便 iDisk MBE Office24 入出力に関することを書き込んでください。 #article
https://w.atwiki.jp/raracha/pages/73.html
TOP VectorWorks 活動 データ 広場 駆込寺 2D 3D RenderWorks ワークシート スクリプト プラグイン 他のアプリとの連携 入出力 入出力 入力 スキャナー デジカメ 出力 プリンター プロッタ データ便 ファイルオクール 宅ふぁいる便 デジタルバイク便 iDisk MBE Office24 入出力に関することを書き込んでください。 #article
https://w.atwiki.jp/wiki8_anson/pages/32.html
入出力 文字列を扱ってみる Stringクラスのメソッドを使ってみる
https://w.atwiki.jp/nopu/pages/174.html
入出力 stream系 fstream ファイルストリーム ファイル入出力。開いたファイルは勝手に閉じる。 ofstream fout( hoge.txt ); fout testmessage 123 std endl; オープンモードは,ファイルを開くときに一緒に指定する。 複数指定するときは | で結ぶ。 書き込み専用(標準) fout( hoge.txt , std ios out ) 改行せずに追記 fout( hoge.txt , std ios app ) 改行して追記 fout( hoge.txt , std ios out | std ios app ) ifstream fin( hage.txt ); fin buf; sstream 文字列ストリーム 文字列に入出力。str() で string に変換する。 ostringstream os; os hoge 123 endl; cout os.str(); 入力ストリームは以下のようにしてスプリットとかに使える。 istringstream is( 10+20 ); int n,m; char c; is n c m; 一行ずつ読み込み STLの場合 #include string #include fstream #include vector ... ifstream fin( filename , ios in); // 読み込み専用 vector string lines; string buf; while( getline(fin, line) ){ lines.push_back(line); } fin.close(); Ctrl-Z (Win) Ctrl-D (Unix) で終了 char c; while( cin.get(c) ){ cout.put(c); } シグナル #include signal.h ... void MySignalHandler( int sig ){ fprintf(stdout, catch %d\n , sig); exit(1); } ... int main() { if (SIG_ERR == signal(SIGUSR1, MySignalHandler )) { printf( failed to set signal.\n ); exit(1); } ... } signal() の1つめの引数は,キャッチするシグナル。1つめは呼び出す関数。 シグナルの送り方 その1(シェルから) kill -USR1 プロセスID シグナルの送り方 その2(プログラム内から) raise( SIGUSR1 ); Cからシェルコマンドを実行 #include stdlib.h ... system( echo hoge ); 文字列の扱い 一文字ずつ入出力 cin.get( c ); // 改行も一文字として扱う。EOFは一度受け取ると出しつづける模様。 cout.put( c );
https://w.atwiki.jp/crsavrkouza/pages/49.html
3.入出力 printf関数では決められた文字列以外に数字を出力することができます.しかも出力の仕方も詳しく設定できます. 例 整数aの中身を出力 int a = 10; printf("%d", a); 結果 10 printf関数は「%〇」の部分を「,」以降の変数の中身に置き換えます. 複数「%〇」がある場合は「,」以降の値の順番で置き換えていきます. 「%〇」は「"文字列"」の穴埋めのための空欄として機能し「,」はその穴に入る数字や文字ということになります. 整数なら「%d,実数なら「%f」,1文字なら「%c」です.置き換えなので,こんなこともできます. 例 整数a, bの中身を出力 int a = 3, b = 2; printf("a = %d, b = %d\n\r", a, b); 結果 a = 3, b = 2 また,何かしらの入力をすることも必要です.入力にはscanf関数が用意されています. 例 int a; scanf("%d", a); printf("input is %d\n\r", a); 結果 3 input is 3 printfとは逆に「"文字列"」の「%〇」に当てはまる部分を抜き出して「,」以降の変数に代入していきます. このとき,変数名には を頭につける必要があります.「%〇」の部分は基本的にはprintf関数と同様ですが,異なる点があります. printf関数ではint型もlong int型も「%d」ですが,scanf関数ではint型は「%d」, long int 型は「%ld」です. float. double型もprintf関数ではどちらも「%f」ですが,scanf関数ではそれぞれ「%f」,「%lf」になります.ややこしいですね.
https://w.atwiki.jp/rffbl22/pages/119.html
ファイル入出力 NCLでファイルを入出力する関数(よく使うもののみ) 具体的な使い方は、websiteを参照 関数一覧(単なる日本語訳) addfile サポートしているデータファイルを開く fbindirread Fortranのdirect access writeもしくはC言のwriteで書かれたバイナリファイルを読む fbindirwrite バイナリレコードをFortranの"access=direct"と似たような記法で書く fbinread UNFORMATTED FORTRAN writeで書かれた1つのバイナリレコードを読む 使用例
https://w.atwiki.jp/ack_sora/pages/19.html
入出力にファイルを使う場合も、ストリームを使うことによって画面に対しての入出力と同様に実現可能。 コード例******************************************* ・sampleIn.txtからデータを読み込み、sampleOut.txtへ出力する。 ・出力する際、「行番号:sampleIn.txtの内容」の形式で行番号を追加する。 package sample.sample1; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; public class Sample1_2 { public static void main(String[] args) throws IOException { InputStream inputStream = new FileInputStream(new File("c \\sampleIn.txt")); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); OutputStream outputStream = new FileOutputStream(new File("c \\sampleOut.txt")); PrintStream printStream = new PrintStream(outputStream); String line = bufferedReader.readLine(); for(int lineNo = 1; line != null; lineNo++){ printStream.println(lineNo + " " + line); line = bufferedReader.readLine(); } } } ************************************************** [コード解説] sampleIn.txtからデータを読み込むためにInputStreamを作成 → 実体はFileInputStreamのインスタンス。 出力先のOutputStreamを作成 → 自体はFileOutputStreamのインスタンス。 …標準入出力と同様にPrintStreamで扱えるようにしている。 BufferedReader#readLine()メソッドの戻り値は1行分の文字列(改行コードは含まれない)。 …readLine()メソッドの戻り値がnullでない間はループ処理を行う。 (戻り値がnullという事は、ストリームの終わり(ファイルの終わり)に達したことを意味する。) BufferedReaderとPrintStreamを用意するまでは多少違うものの、それ以外は画面からの入出力と同様に 処理が可能。(違いは、入出力のストリームの元となっている部分) →オブジェクト指向の恩恵(ポリモーフィズムの概念が生かされている)
https://w.atwiki.jp/slimelv1024/pages/58.html
ファイル入出力とは 今まで扱ってきた入出力は標準入出力と呼ばれ、キーボードからの入力やディスプレイへの出力を扱って来ました しかし、プログラムを終了すると結果もすべて消えてしまいます ファイル入出力はファイルにデータを保存し、プログラムを閉じても再度読み込み編集することが可能です ファイルの開閉 ファイルデータを扱うには、まずファイルを開閉する操作を知らないといけません ファイル型 *ポインタ名 ポインタ名=fopen("ファイル名","モード"); fclose(fp); ファイル型のポインタという今まで見たこともないものが登場しています しかし、これは開くファイルの識別子として使うだけなので、特別な操作はありません これをファイルポインタと呼びます fopen関数 ファイルを開く操作をする関数です ファイル名には開きたいファイル名を文字列として指定します モードはファイルを開く目的表す文字列です モードは以下のとおり モード 内容 ファイルがあるとき ファイルが無いとき r 読み込み 正常 エラー(NULL返却) w 書き込み サイズを0にする(上書き) ファイルを新規作成 a 追加書き込み 最後の追記 ファイルを新規作成 r+ 読み込み+書き込み 正常 エラー(NULL返却) w+ 書き込み+読み込み サイズを0にする(上書き) ファイルを新規作成 a+ 読み込み+追加書き込み 最後の追記 ファイルを新規作成 fclose関数 ファイルを閉じる操作をする関数です ファイルを開閉するだけのプログラム(ファイルが無かった場合新規作成) FILE *fp; fp=fopen("sample.txt","w"); fclose(fp); ファイルの入出力操作 さっきのプログラムではまだファイルに対して何も操作を行っていません ファイル入出力を行う関数は、今まで扱ってきた標準入出力関数と操作が似ており、すぐになじむことが出来ると思います fprintf関数 int num=10; FILE *fp; fp=fopen("sample.txt","w"); fprintf(fp,"%d\n",num); fclose(fp); ファイルに書式付で書き込み fscanf関数 int num; FILE *fp; fp=fopen("sample.txt","r"); fscanf(fp,"%d", num); fclose(fp); ファイルに書式付で読み込み fputs関数 FILE *fp; fp=fopen("sample.txt","w"); fputs("abc",fp); fclose(fp); ファイルへ文字列を1行書き込む fgets関数 char str[256]; FILE *fp; fp=fopen("sample.txt","r"); fgets(str,sizeof(str),fp); fclose(fp); ファイルから文字列を1行読み込む ファイルを開くときの注意 読み込み時にファイルがないとエラーを起こすといいましたが、何も記述しなければ何が問題なのか分かりません なのでファイルを開く処理するときは、ファイルが開けなかったときの処理も記述します FILE *fp; if((fp=fopen("sample.txt","w"))==NULL){ printf("ファイルが開けません\n"); return; fclose(fp); 大体エラーがあった場合処理を終了させます
https://w.atwiki.jp/ack_sora/pages/18.html
コード例******************************************* package sample.sample1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; public class Sample1_1 { public static void main(String[] args) throws IOException { PrintStream printStream = System.out; InputStream inputStream = System.in; InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String input = bufferedReader.readLine(); long val1 = Long.parseLong(input); input = bufferedReader.readLine(); long val2 = Long.parseLong(input); printStream.println(val1 + "+" + val2 + "=" + (val1 + val2) ); } } *************************************************** [コード解説] 「入力」 InputStreamReaderクラスが入出力を読み込む役割をする。 InputStreamReaderのコンストラクタの引数にはどのストリームから読み込むのか、読み込み元となる ストリームを指定する。(例ではinputStream) 変数inputStreamの実体であるSystem.inは「標準入力」を意味する。(キーボード) InputStreamReaderのインスタンスを使用することで入力を読み込むことができる。 BufferedReaderを使うと、「Enter」入力された部分までを文字列として取得できる。 「1」「2」「3」「Enter」と入力した場合、1,2,3をバッファしていき、「Enter」が押されたときにreadLine()が呼ばれ メモリにバッファされていた「123」の文字列がreadLine()の戻り値になる。 Long#parseLong(String)メソッドを使い、文字列をString型に変換し、計算を行う。 「出力」 PrintStreamのインスタンスに対してprintln(String)メソッドを呼ぶことによって出力している。 printStreamの実体であるSystem.outは「標準出力」を意味する。