[ create a new paste ] login | about

Link: http://codepad.org/fDk1jVtV    [ raw code | fork ]

C, pasted on Nov 29:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX         (256)

typedef int bool;
enum { false , true };

/* 関数プロトタイプ宣言 */
bool    Func(int, char **);
void    print_msg(void);
void    usage(void);

/* グローバル変数 */
int     gRepeat     = 0     ;
char    gMsg[MAX]   = {0}   ;
bool    gHori       = true  ;

int main(int argc, char **argv){
    if (!Func(argc,argv)) {
        usage();
        return 1;
    }
    print_msg();
    return 0;
}

bool Func(int argc,char **argv) {
    int i,iState ;
    for (i=1,iState=0 ; i<argc ; i++) {
        switch (iState) {
        case 0: /* オプション指定待ち。先頭'-'以外は無視? */
            if (argv[i][0]!='-')    break;
            switch (argv[i][1]) {
            case 'h':
            case 'H':   gHori = true;   break;
            case 'v':
            case 'V':   gHori = false;  break;
            case 'n':
            case 'N':   iState = 1;     break;  /* 繰り返し数指定 */
            case 's':
            case 'S':   iState = 2;     break;  /* 文字列指定 */
            }
            break;
        case 1: gRepeat = atoi(argv[i]);                iState=0;   break;  /* 繰り返し数指定 */
        case 2: snprintf(gMsg,sizeof(gMsg)-1,argv[i]);  iState=0;   break;  /* 文字列指定 */
        }
    }
    if (gRepeat==0 || strlen(gMsg)==0)  return false;
    
    return true;
}
void print_msg(void) {
    int iLen,i,j;
    iLen = strlen(gMsg);
    if (gHori) {
        for (i=0 ; i<gRepeat ; i++) printf("%s\n",gMsg);
    } else {
        for (i=0 ; i<iLen ; i++) {
            for (j=0 ; j<gRepeat ; j++) printf("%c",gMsg[i]);
            printf("\n");
        }
    }
    return;
}
void usage(void) {
    printf("Usage: vhswitch -[v|h] -n number -s \"message\"\n");
    exit(EXIT_FAILURE);  /* EXIT_FAILURE は 1 */
}


Create a new paste based on this one


Comments: