千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所

Slides:



Advertisements
Similar presentations
プログラミング演習 II 2005 年 1 月 19 日(第 9 回) 理学部数学科・木村巌. 前回までの復習 共用体( union type ) 共用体( union type ) 列挙 (enumerated type ) 列挙 (enumerated type ) 構造体、構造体のポインタ、
Advertisements

10: ファイル入出力 Linux にログインし、以下の講義ページ を開いておくこと teachers/w483692/CPR1/ C プログラミング入門 総機 1 ( 月 1) 1.
実習環境整備 高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司. DAQ-Middleware 配布物 ソース Scientific Linux 5.9 上で作った RPM
Essay writing rules for Japanese!!. * First ・ There are two directions you can write. ・よこがき / 横書き (same as we write English) ・たてがき / 縦書き (from right to.
プロセスの生成とコマンドの実行 プロセスの生成とコマンドの実行 プロセス生成のシステムコール プロセス生成のシステムコール プロセス生成のプログラム例 プロセス生成のプログラム例 プログラム実行のシステムコール プログラム実行のシステムコール 子プロセスの終了を待つシステムコール 子プロセスの終了を待つシステムコール.
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
高エネルギー加速器研究機構 素粒子原子核研究所 濱田 英太郎
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
インターネット技術特論 D:SSI,PHP,eRuby 山口 実靖
高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司
高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司
高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司
情報処理演習C2 ファイル操作について (2).
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
第2回ネットワークプログラミング 中村 修.
第13回 プログラミングⅡ 第13回
アルゴリズムとデータ構造 補足資料6-3 「サンプルプログラムcat3.c」
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
DAQ-Middlewareトレーニングコース 実習
DAQ-Middlewareトレーニングコース 実習
Chapter 4 Quiz #2 Verbs Particles を、に、で
“You Should Go To Kyoto”
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
前回の復習 ファイル入出力①.
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
DAQ-Middleware トレーニングコース 実習
DAQ-Middleware トレーニングコース実習
ニュートン法の解の計算 情報電子工学系学科 電気電子工学コース・情報通信システム工学コース
高エネルギー加速器研究機構 素粒子原子核研究所 千代浩司
プログラムの制御構造 選択・繰り返し.
モバイルプログラミング第4回 Cプログラミングの基礎( 3 )
平山 英夫、波戸 芳仁 KEK, 高エネルギー加速器研究機構
Cプログラミング演習 第6回 ファイル処理と配列.
プログラミング論 ファイル入出力
Causative Verbs Extensively borrowed from Rubin, J “Gone Fishin’”, Power Japanese (1992: Kodansha:Tokyo) Created by K McMahon.
Cプログラミング演習.
MATLAB測位プログラミングの 基礎とGT (2)
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
iioLoadFile()とiioMallocImageBuffer()の補足
iioLoadFile()とiioMallocImageBuffer()の補足
iioLoadFile()とiioMallocImageBuffer()の補足
ネットワークプログラミング 第3回「C言語の基礎~コマンドライン引数・構造体・ポインタ」
プログラミング論 ファイル処理 (中級編)
大規模なこと Large scale.
プログラミング論 ファイル入出力
プログラムの制御構造 配列・繰り返し.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
2005年度 データ構造とアルゴリズム 第6回 「ハッシュ法を用いた探索」
C言語演習 情報ネットワーク特論.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
B演習(言語処理系演習)第2回 田浦.
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
平山 英夫、波戸 芳仁 KEK, 高エネルギー加速器研究機構
前回の復習.
ファイル操作について (1).
モジュール分割.
ネットワーク・プログラミング 1対多のプロセス間通信.
目的とするユーザーコードを 作成するために
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
C言語プログラミング・課題 ファイルを読み込んで、その内容を表示するプログラムを作成せよ。
Elements of Style Rule 7-11 (P7-14)
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
情報処理Ⅱ 2005年11月25日(金).
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
モバイルプログラミング第3回 Cプログラミングの基礎( 2 )
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
Presentation transcript:

千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所 バイナリファイルの読みかた 千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所 2017-09-27

バイナリファイルの特徴 行というものが存在しない 何バイト読めばよいか自分で指定する キー関数: fopen(), fread(), fclose() 2017-09-27

fread() - マニュアルを読む NAME fread, fwrite - binary stream input/output SYNOPSIS #include <stdio.h> size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); DESCRIPTION The function fread() reads nmemb elements of data, each size bytes long, from the stream pointed to by stream, storing them at the location given by ptr. The function fwrite() writes nmemb elements of data, each size bytes long, to the stream pointed to by stream, obtaining them from the location given by ptr. For non-locking counterparts, see unlocked_stdio(3). 2017-09-27

fread() - マニュアルを読む RETURN VALUE fread() and fwrite() return the number of items successfully read or written (i.e., not the number of characters). If an error occurs, or the end-of-file is reached, the return value is a short item count (or zero). fread() does not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3) to determine which occurred. CONFORMING TO C89, POSIX.1-2001. SEE ALSO read(2), write(2), feof(3), ferror(3), unlocked_stdio(3) 2017-09-27

fread() FILE *fp = fopen(“filename”, “r”); int n = fread(buf, size, nmemb, fp); sizeバイトをnmemb個読む。 16バイト読むとして組み合わせは 1 x 16, 2 x 8, 4 x 4, 8 x 2, 16 x 1 正常に読めたときの戻り値が違う ファイル終端付近で指定したバイト数だけ読めないことがある。これを検知するには fread(buf, 1 /*byte*/, nmemb, fp)するのが楽 2017-09-27

組み合わせで性能がかわるか? size * count バイト分読んでそうなので組み合わせは性能に関係しなさそう glibc-2.xx/libio/iofread.c _IO_size_t _IO_fread (buf, size, count, fp) void *buf; _IO_size_t size; _IO_size_t count; _IO_FILE *fp; { _IO_size_t bytes_requested = size * count; _IO_size_t bytes_read; CHECK_FILE (fp, 0); if (bytes_requested == 0) return 0; _IO_acquire_lock (fp); bytes_read = _IO_sgetn (fp, (char *) buf, bytes_requested); _IO_release_lock (fp); return bytes_requested == bytes_read ? count : bytes_read / size; } size * count バイト分読んでそうなので組み合わせは性能に関係しなさそう 2017-09-27

fread()使い方 (1/2) int main(int argc, char *argv[]) { size_t n; char buf[1024]; if (argc != 2) { usage(); exit(EXIT_FAILURE); } FILE *fp = fopen(argv[1], "r"); if (fp == NULL) { err(EXIT_FAILURE, "fopen error"); 2017-09-27

fread()使い方 (2/2) for ( ; ; ) { n = fread(buf, 1 /*byte*/, sizeof(buf), fp); if (n == 0) { if (feof(fp)) { break; } else if (ferror(fp)) { fprintf(stderr, "fread error\n"); exit(EXIT_FAILURE); else { fprintf(stderr, "fread unkonwn error\n"); /* fread returns successfully */ if (n != sizeof(buf)) { fprintf(stderr, "paritial read: %ld bytes (should be %ld bytes)\n", n, sizeof(buf)); /* do something */ return 0; 2017-09-27

実習 ex04 でやってみる。 2017-09-27