エンティティ化

今回は、メールアドレスやURLのエンティティ生成ソフトを作ってみます。
エンティティとは実体のことです。つまり文字コードのことです。
たとえば、ActiveBasicをエンティティで表記すると、
ActiveBasic
となります。(&は全角表記しています)
自分のサイトに普通にメールアドレスを載せるよりも、エンティティ化しておくと、少しは効果があるようです。

プログラム

'エンティティ化
#console
#include<vcrt71.sbp>

Dim buf[1000] As Byte
Dim buf2[10] As Byte
Dim mes[8000] As Byte
Dim n As Long,buflen As Long
printf(Ex"変換したい文字列を入力してください。\n")
fgets(buf , 1000 , stdin)'文字列の入力
buflen = strlen(buf)
srand(time(NULL))
mes[0] = 0
For n=0 To  buflen - 2'改行,NULLを除く
    If rand() Mod 3 < 2 Then
        sprintf(buf2 , "&#%d;" , buf[n])'10進数
    Else
        sprintf(buf2 , "&#x%x;" , buf[n])'16進数
    End If
    strcat(mes , buf2)
Next

printf(Ex"↓↓↓↓↓↓\n%s" , mes)

exit(0)'stdinを使うときは明示的に呼ばないと落ちるようです。
文字列はfgetsで読み込んでいます。これで1000文字以上は読めない仕組みになります。
ただバッファサイズは、適当です。あまりに文字列が長いとエラーになるかもしれません。
変換にはsprintf関数を使っています。とても便利な関数です。
乱数を使って10進数と16進数を混在しています。
最後にmesに溜め込んだ文字列を表示して終わりです。
ABはCのように自動的にexit関数を呼ばないようなのでexit関数で終了させています。

使い方

簡単です。 文字を入れてリターンキーことエンターキーを押すだけです。
プログラム名をemにしています。
実行結果は以下のようになります。リダイレクトするとファイルに保存できますね。
em実行