#99 Article 1073 Posted at 1995/12/24 22:28:34 by Apple*Tea (MAP5988) [SAHOU.5]
Subject: Re: Re: プログラミング作法・5:回文の判定 /1070 /1063
Awk版と同じ処理をCで書いてみました。
#include <stdio.h>
#include <malloc.h>
#include <ctype.h>
#include <string.h>
void main(void){
int len,i,c;
char *buf;
char *nor;
char *rev;
buf=calloc(1,256);
nor=calloc(1,256);
rev=calloc(1,256);
gets(buf);
len=strlen(buf);
//大文字に変換、記号を抜く
c=0;
for(i=0;i<=len;i++){
if (isalpha (*(buf+i)) !=0){
*(nor+c)=toupper(*(buf+i));
c++;
}
}
//ひっくり返す
for (i=0;i<c;i++){
*(rev+i)=*(nor+c-1-i);
}
//比較
if (strcmp(nor,rev)==0){
printf("%s\n",buf);
}
}
タブは4にしてます。Awkの場合は4でも8でも気にしません。
"{"は改行するとスカスカした感じになるので、続けて書きます。これって
GNU流だと聞いたことがあるけど、そうなんですか?
if文は続く命令が1行でも上のように書きます。
コメントの行は一行の場合、面倒なので "//"
メモリの確保はなんとなく256(^^)
やっぱり時間がかかった(^^;)メモリ確保でmalloc使ったらはまったし。
MAP5988 Apple*Tea