2013年8月3日土曜日

開発環境

プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第5章(ポインタと配列)、5.3(ポインタと配列)、5.4(アドレス計算)、5.5(文字ポインタと関数)、演習5-4を解いてみる。

その他参考書籍

演習 5-4.

コード

sample.c

#include <stdio.h>
#define MAXSIZE 1000

int main()
{
    int strend(char *, char *);
    char s1[MAXSIZE] = "program";
    char s2[MAXSIZE] = "programming";
    char s3[MAXSIZE] = "programmer";
    char s4[MAXSIZE] = "ing";
    char s5[MAXSIZE] = "er";
    char s6[MAXSIZE] = "python programmer";
    char s7[MAXSIZE] = "";
    
    printf("%s %s %d\n", s1, s4, strend(s1, s4));
    printf("%s %s %d\n", s1, s5, strend(s1, s5));
    printf("%s %s %d\n", s2, s4, strend(s2, s4));
    printf("%s %s %d\n", s2, s5, strend(s2, s5));
    printf("%s %s %d\n", s3, s4, strend(s3, s4));
    printf("%s %s %d\n", s3, s5, strend(s3, s5));
        
    printf("'%s' '%s' %d\n", s3, s6, strend(s3, s6));
    printf("%s %s %d\n", s1, s1, strend(s1, s1));
    printf("'%s' '%s' %d\n", s7, s7, strend(s7, s7));
    printf("'%s' '%s' %d\n", s1, s7, strend(s1, s7));
    printf("'%s' '%s' %d\n", s7, s1, strend(s7, s1));
    
    return 0;
}

int strend(char *s, char *t)
{
    char *u;
    char *v;
    
    u = s;
    v = t;
    
    while (*s != '\0') {
        s++;
    }
    while (*t != '\0') {
        t++;
    }
    while (*s == *t && s >= u && t >= v) {
        if (t == v) {
            return 1;
        }
        s--;
        t--;
    }
    return 0;
}

入出力結果(Terminal)

$ ./a.out
program ing 0
program er 0
programming ing 1
programming er 0
programmer ing 0
programmer er 1
'programmer' 'python programmer' 0
program program 1
'' '' 1
'program' '' 1
'' 'program' 0
$

0 コメント:

コメントを投稿