- 201 名前:200 mailto:sage [2007/06/08(金) 08:18:24 ]
- (続き)
配列の大きさは、後から変更することもあるため、直接数字を使うのは避ける。 というのも、複数箇所を漏れ無く変更するのは面倒だしミスしやすい。 たとえば、 #define TEXT_IN_BUFFER 256 としておき、 char s[TEXT_IN_BUFFER] ; fgets(s,TEXT_IN_BUFFER,fp); for( a=0 ; a<TEXT_IN_BUFFER ; a++ ){ のようにする・・・というのは昔から本に書かれているけれども、 最近のCコンパイラならば、もっと良い方法がある。 配列宣言にはスコープがあるけれども、 マクロにはスコープがないので、 const int TEXT_IN_BUFFER 256 ; char s[TEXT_IN_BUFFER] ; のようにする。 しかしそれではやはり煩雑だし、 TEXT_IN_BUFFERとsが生き別れになる事故もあるので、 #define SIZE_OF_ARRAY(x) (sizeof(x)/sizeof(x[0])) としておき、 const int TEXT_IN_BUFFER 256 ; char s[TEXT_IN_BUFFER] ; fgets(s,SIZE_OF_ARRAY(s),fp); for( a=0 ; a<SIZE_OF_ARRAY(s) ; a++ ){ のようにする。 この場合は、TEXT_IN_BUFFERを、ローカルスコープにするのであれば、 char s[256] ; と直に書いても、悪くない。
|

|