#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