色々書き換えてみたので今回も大文字を小文字に変換しながら表示するechoを処理させてみる。
#include <stdio.h>
int main(void)
{
char array[3000] = "";
char *ptr = array;
*(ptr+2) += 8;
ptr += 2;
while(*ptr){
(*ptr)--;
*(ptr+1) += 8;
}
*(ptr+4) += 9;
ptr += 4;
while(*ptr){
(*ptr)--;
*(ptr+1) += 10;
}
ptr++;
while(*ptr){
*(ptr-2) = fgetc(stdin);
ptr -= 2;
while(*ptr){
(*ptr)--;
(*(ptr+1))++;
(*(ptr-1))++;
(*(ptr-3))++;
}
ptr -= 3;
while(*ptr){
(*ptr)--;
(*(ptr+3))++;
}
ptr += 5;
while(*ptr){
(*ptr)--;
(*(ptr+1))++;
(*(ptr+3))++;
}
ptr++;
while(*ptr){
ptr -= 2;
while(*ptr){
(*ptr)--;
(*(ptr+1))++;
(*(ptr+3))++;
}
ptr += 3;
while(*ptr){
(*ptr)--;
(*(ptr-3))++;
}
ptr -= 2;
while(*ptr){
while(*ptr){
(*ptr)--;
}
(*(ptr-1))--;
}
(*(ptr+1))--;
ptr++;
}
ptr += 2;
while(*ptr){
(*ptr)--;
(*(ptr-3))++;
}
ptr -= 7;
while(*ptr){
(*ptr)--;
(*(ptr-1))++;
(*(ptr-3))++;
}
ptr--;
while(*ptr){
ptr += 2;
while(*ptr){
(*ptr)--;
(*(ptr-1))++;
(*(ptr-3))++;
}
ptr -= 3;
while(*ptr){
(*ptr)--;
(*(ptr+3))++;
}
ptr += 2;
while(*ptr){
while(*ptr){
(*ptr)--;
}
(*(ptr+1))--;
}
(*(ptr-1))--;
ptr--;
}
ptr -= 2;
while(*ptr){
(*ptr)--;
(*(ptr+3))++;
}
ptr += 4;
while(*ptr){
while(*ptr){
(*ptr)--;
}
*(ptr+1) += 32;
ptr += 2;
while(*ptr){
while(*ptr){
(*ptr)--;
}
*(ptr-1) -= 32;
}
ptr -= 2;
}
ptr += 2;
while(*ptr){
(*ptr)--;
}
fputc(*(ptr-1),stdout);
ptr++;
}
return 0;
}
読み易いと言えるか如何かは微妙だが、前より確実に良くなっている。
Nを入力しても終了されるのだが……これは(Y/y)の間違いではないのだろうか。【謎】
試しに大文字を小文字に変換しながら表示するechoを処理させてみる。
#include <stdio.h>
int main(void)
{
char array[3000] = "";
char *ptr = array;
ptr += 2;
*ptr += 8;
while(*ptr){
(*ptr)--;
ptr++;
*ptr += 8;
ptr--;
}
ptr += 4;
*ptr += 9;
while(*ptr){
(*ptr)--;
ptr++;
*ptr += 10;
ptr--;
}
ptr++;
while(*ptr){
ptr -= 2;
*ptr = fgetc(stdin);
while(*ptr){
(*ptr)--;
ptr++;
(*ptr)++;
ptr -= 2;
(*ptr)++;
ptr -= 2;
(*ptr)++;
ptr += 3;
}
ptr -= 3;
while(*ptr){
(*ptr)--;
ptr += 3;
(*ptr)++;
ptr -= 3;
}
ptr += 5;
while(*ptr){
(*ptr)--;
ptr++;
(*ptr)++;
ptr += 2;
(*ptr)++;
ptr -= 3;
}
ptr++;
while(*ptr){
ptr -= 2;
while(*ptr){
(*ptr)--;
ptr++;
(*ptr)++;
ptr += 2;
(*ptr)++;
ptr -= 3;
}
ptr += 3;
while(*ptr){
(*ptr)--;
ptr -= 3;
(*ptr)++;
ptr += 3;
}
ptr -= 2;
while(*ptr){
while(*ptr){
(*ptr)--;
}
ptr--;
(*ptr)--;
ptr++;
}
ptr++;
(*ptr)--;
}
ptr += 2;
while(*ptr){
(*ptr)--;
ptr -= 3;
(*ptr)++;
ptr += 3;
}
ptr -= 7;
while(*ptr){
(*ptr)--;
ptr--;
(*ptr)++;
ptr -= 2;
(*ptr)++;
ptr += 3;
}
ptr--;
while(*ptr){
ptr += 2;
while(*ptr){
(*ptr)--;
ptr--;
(*ptr)++;
ptr -= 2;
(*ptr)++;
ptr += 3;
}
ptr -= 3;
while(*ptr){
(*ptr)--;
ptr += 3;
(*ptr)++;
ptr -= 3;
}
ptr += 2;
while(*ptr){
while(*ptr){
(*ptr)--;
}
ptr++;
(*ptr)--;
ptr--;
}
ptr--;
(*ptr)--;
}
ptr -= 2;
while(*ptr){
(*ptr)--;
ptr += 3;
(*ptr)++;
ptr -= 3;
}
ptr += 4;
while(*ptr){
while(*ptr){
(*ptr)--;
}
ptr++;
*ptr += 32;
ptr++;
while(*ptr){
while(*ptr){
(*ptr)--;
}
ptr--;
*ptr -= 32;
ptr++;
}
ptr -= 2;
}
ptr += 2;
while(*ptr){
(*ptr)--;
}
ptr--;
fputc(*ptr,stdout);
ptr += 2;
}
return 0;
}
元々ソースを読み易くする為に作っていた筈なのだが、逆に読み難くなっている気がする……。要するに使い道が無い、と。
BOOL型のサイズ一寸気になったので調べてみた。因みに、使っている処理系はBorland C++ Compiler 5.5.1 for Win32。
test.c#include <stdio.h>
#include <windows.h>
int main(void)
{
printf("%d",sizeof(BOOL));
return 0;
}
4
TRUEとFALSEの二通りのデータしか扱わない変数に4byte使う必要は無いだろう……BOOL型の配列とか作ったらメモリが勿体無いな。
京都と奈良に行きましたよ。