トップページ > プログラム > 2016年09月30日 > RzBZUGvmK

書き込み順位&時間帯一覧

1 位/171 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000000000004621114



使用した名前一覧書き込んだスレッド一覧
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net

書き込みレス一覧

C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
884 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 19:48:30.05 ID:RzBZUGvmK
>>881
コンピューターから見るとバイナリーファイルの方が合理的。サイズ、速度などの点で。
バイナリーファイルを扱えないOSは汎用に使えない。すでにバイナリーファイルの読み書きはコンピューティングの基礎だから。
作りたいならテキストファイルしか扱えないOSでも作ればいい。性能も機能性も劣るものができるだろう。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
886 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 19:52:34.77 ID:RzBZUGvmK
バイナリー入出力がないと機械語を扱えない。
ほとんどの機械語はバイナリーデータだから。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
889 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 19:54:52.12 ID:RzBZUGvmK
>>885
昔はテキスト形式の画像データも使われていた。でもバイナリの方がサイズが小さくなってダウンロードが早いだろ。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
890 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 19:57:29.70 ID:RzBZUGvmK
>>887
CPUもメモリーのアドレス空間もバイナリーデータの世界だ。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
891 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 20:02:48.38 ID:RzBZUGvmK
>>887
広義ではテキストデータもバイナリデータに含まれる。バイナリデータの一部をテキストデータと呼んでいるだけだ。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
895 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 20:14:47.86 ID:RzBZUGvmK
テキストファイルをさまざまなOSで交換するとき、色々な問題が発生した。
第一は改行コードの違いだ。MS-DOSやWindowsでは改行は"\r\n"で出力する。古いタイプのMacでは"\r"で、UNIX/Linuxでは"\n"だった。
この違いを吸収するためにMS-DOSやWindowsのC言語ではテキストモードという特別なモードがある。
テキストモードでは"\r\n"を"\n"と見なす。改行コードが1文字の制御文字になるのは扱いやすい。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
896 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 20:22:27.80 ID:RzBZUGvmK
第二に文字の符号化(エンコーディング)の問題だ。
日本語にはシフトJIS,EUC-JP,JISなど、さまざまな文字セットが存在する。
日本語MS-DOSではシフトJISが使われていて、古いタイプのUNIX/LinuxではEUC-JPが使われていた。また、日本語のメール送信ではJISを使っていた。
現在ではテキストデータはASCIIとUnicode(UTF-8を含む)が標準になっている。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
897 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 20:33:49.22 ID:RzBZUGvmK
Windows内部のテキストデータには主にUTF-16が使われている。言い換えれば、
UTF-16ではないテキストデータをWindows内部で扱うためにはUTF-16への変換が必要かも知れない。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
899 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 20:47:15.92 ID:RzBZUGvmK
具体的に見ていこう。
#include <stdio.h>
int main(void)
{
FILE *fp = fopen("a.txt", "w");
fprintf(fp, "\n");
fclose(fp);
return 0;
}
この八行のプログラムはファイル「a.txt」に1個の改行コードを出力する。
Windowsの場合、出力の際に1個の改行コードは"\r\n" (CR LF)に変換されるので、a.txtをバイナリーエディターで開くと、
ファイルサイズは2バイトになるだろう。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
900 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 20:53:16.11 ID:RzBZUGvmK
バイナリーファイルをメモ帳で読み込んでも読みづらいし、正しく書き込めないかも知れない。
バイナリーファイルを扱うプログラムを作るなら、バイナリーエディターは必需品。必ずインストールしておこう。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
902 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 21:06:42.05 ID:RzBZUGvmK
バイナリーエディターは、テキストファイルも開ける。
テキストファイルはバイナリーファイルのサブセットだから。
バイナリーのイメージはちょうどバイナリーエディターで表示されるように考えればよい。
バイナリーデータはバイトの並びであり、バイナリーの1バイトは2桁の16進数で表示するのが合理的である。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
903 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 21:20:07.22 ID:RzBZUGvmK
WindowsのバイナリーエディターはBZかStirlingをオススメする。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
909 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 22:40:08.06 ID:RzBZUGvmK
MSテキストモードで……
"\r\n"の入力 ⇒ "\n"になる。
"\n"の出力 ⇒ "\r\n"になる。
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
911 :片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)[sage]:2016/09/30(金) 23:28:45.46 ID:RzBZUGvmK
MSテキストモードでは、入力時の^Zはファイル終端として解釈してもいいことになっている。
ファイルの終わりでCtrl+Zを押してたMS-DOSのなごり。現在ではゴミ文字になるのであまり使わない。getcharでEOFが返るときだろう。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。