2013年7月13日土曜日

開発環境

プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第3章(制御の流れ)3.5(ループ while と for)の演習3-3を解いてみる。

その他参考書籍

演習 3-3.

コード

sample.c

#include <stdio.h>
#define MAXLENGTH 1000

void expand(char s1[], char s2[]);

int main()
{
    char s1[MAXLENGTH], s2[MAXLENGTH],
         s3[MAXLENGTH], s4[MAXLENGTH],
         s5[MAXLENGTH];
    
    expand("a-b-c", s1);
    expand("a-z0-9", s2);
    expand("-a-z", s3);
    expand("A-B-C", s4);
    expand("A-Z-", s5);
    
    printf("%s\n%s\n%s\n%s\n%s\n", s1, s2, s3, s4, s5);
    
    return 0;
}

void expand(char s1[], char s2[])
{
    int i, j, c;
    
    for(i = 0, j = 0; s1[i] != '\0'; i++, j++) {
        c = s1[i];
        if (s1[i + 1] == '-' && s1[i + 2] >= c) {
            i += 2;
            for (; c < s1[i]; c++, j++) {
                s2[j] = c;
            }
            j--;
            i--;
        } else {
            s2[j] = s1[i];
        }
    }
    s2[j] = '\0';
}

入出力結果(Terminal)

$ ./a.out
abc
abcdefghijklmnopqrstuvwxyz0123456789
-abcdefghijklmnopqrstuvwxyz
ABC
ABCDEFGHIJKLMNOPQRSTUVWXYZ-
$

0 コメント:

コメントを投稿