#include #include #define BUFLEN 256 // 文字列バッファのサイズ #define BUFFMT "%255s" // バッファの入力書式...この方法はイマイチ /* もし,BUFLEN の値を変えたら, BUFFMT の数字も変える必要があります. 要するに二度手間. */ int main(void) { int total = 0; // 合計 char cmd[BUFLEN]; // コマンドの文字列バッファ char *fmt = BUFFMT; // 書式文字列...イマイチな方法 /* char fmt[16]; // 書式文字列...イケてる方法 sprintf(fmt, "%%%ds", BUFLEN-1); // 書式文字列を自動生成する */ /* sprintf() は文字配列への書式付き出力ね. "%%" は,1文字の文字列 "%" を表わすよ. "%d" は,数値 BUFLEN-1 の文字列..."255" に置き換わるよ. "s" は そのまま "s" だよ. 結局,fmt の内容は "%255s" になるね. バッファサイズ変更の手間は #define BUFLEN の1箇所だけで済むよ. */ while (1) { // コマンドの入力 printf("命令 > "); if (scanf(fmt, cmd) == EOF) break; // コマンドの解釈・実行 if (strcmp(cmd, "exit") == 0) break; // exit コマンド // この辺りに他のコマンドを追加してゆくよ else { // コマンドが1個だけならこの else は冗長.break 直後なので. printf("エラー:不明なコマンド:%s\n", cmd); } printf("\n"); } printf("終了.\n\n"); return (0); }