C 言語演習プログラム -- 第 6 日目
ポインタの話より詳しくなりました。perlで言うところの、いわゆるリファレンスなのかと…
- 新しく使った関数
#include <stdio.h> fread(バッファ変数, 読み込みバイト, 読み込み回数, ファイルポインタ); //ファイルをバイト単位で読む込む関数 fwrite(バッファ変数, 書き出しバイト, 読み込み回数, ファイルポインタ); //ファイルをバイト単位で書き出す関数
- 引数の受け取り方
c:\> command 引数1 引数2 "引 数 3" argv[0] argv[1] argv[2] argv[3]
argv はポインタ変数。
main (int argc, char* argv[]){ }
アドレスを参照したいときは変数の前に「&」をつけると。
ポインタ変数は変数宣言時に「*」をつけると。
// ポインタ変数宣言 int *p; // or int* p; // アドレス参照 int d = 5; p = &d; // 変数d のアドレスをポインタ変数p に格納してる。 p; // … 変数d のアドレス *p; // … 変数d の値 ( この場合 5 )
アドレスの値から格納した文字列のバイト数分が変数実体が存在するメモリ空間、なのかな?
ポインタはなんとなくわかったんですが、6日目の題材は「ファイルの暗号化・複合化」。ちょっとおなかいっぱいです。
暗号化ロジックは単純なものでしたが今日は読み取れませんでしたorz
元の値と入力された暗号キーを 10進法 で加算し、ASCII コード変換をする方法なのかな?
たとえば「a」は
a -> 0110 0001 -> 97
コレを暗号キー「x」で暗号化する場合、 x = 120 なので
97 + 120 = 217
とする。で、char 型の表現範囲は -128〜127 なので 2進法で 217 を表現しなおして -39。
そうすると a という単語が 半角カナの「ル」に変換されるという寸法。
この方法は可逆だから暗号キーがばれなければ解読は不可能だベーって感じ。まぁ頑張れば読めるんだろうけど、そんな労力いらなーい。