#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 */
}