IT系メモ

興味のあったことや、勉強したことなどをメモしていきます。

プログラミング

数字の変換

ASCIIコードでは「7」は「0x37」を表わされ、「0」は「0x30」を表わされるので、数字の7に直すときは「0x30」を引けば良い。これは「'0'」を引くのと同じ。

/*数字か判定して、真だと数字に変換*/
int n;
char fig;

if('0' <= fig && fig <= '9')

n=fig-'0';

アルファベットの大文字は「0x41」から、小文字は「0x61」から。大文字と小文字の差は「0x20」となりスペースに対応している。

/*大文字小文字変換*/
char fig;

if('A' <= fig && fig <= 'Z')   fig = fig+' ';
if('a' <= fig && fig <= 'z')   fig = fig-' '; 

関数を利用した場合

/*Character TYPE Header*/
/*12個の文字検査関数と2個の文字変換関数*/
<ctype.h>
int isdigit(int c)    /*文字が数字かチェック*/
int isalpha(int c)    /*文字が英字かチェック*/
int isupper(int c)    /*文字が英大文字かチェック*/
int islower(int c)    /*文字が英小文字かチェック*/
int toupper(int c)    /*引数の文字を大文字にする*/
int tolower(int c)    /*引数の文字を小文字にする*/
ほか
is*のものは真/偽、to*は変換のための関数

エスケープ文字

改行(UNIX)「?n(0x0a)」改行(Mac)「?r(0x05)」、タブ「?t(0x09)」、バックスペース「?b(0x08)」などはプログラム中では一文字としてあつかわれる。
空白文字はすべて0x20のスペースより小さいので、文字列の空白文字を調べるのに

if(fig <= ' ')

のようにする。ただしこの場合は先に'?0'を調べないと無限ループになってしまう。

文字列操作

Cでは文字列の長さ、文字列が専有している領域のサイズを直接知る方法がない。なので長さを調べるには先頭から'?0'までを数えなければならない。

文字列の表示

%<数字>sで表示する桁を指定する。数字が文字数を超える場合は右詰めでスペースが入り、数字をマイナスにすると左詰めになる。小数点を使うと入力した文字列のうち出力する文字数が指定できる。

%[-][全体の最小出力文字数][. +入力文字列の最大出力文字数]s

%dは整数値、%xは16進法、%oは8進法。%+dとすれば意図的に+の符合を付ける。16進法で前に「0x」を付ける場合は「%#x」。