#include #include #define MAX 10 /* ----- 関数 input ----- キーボードの入力を待ち指定された配列に文字を代入する 配列には文字列として代入する 引数 ・char s[] 配列 ・int max 配列のサイズ (実際には 配列サイズ - 1 文字が有効になる) ・int caps 大文字→小文字変換を行うか (0:行わない 1:行う) 返り値 ・なし */ void input(char s[], int max, int caps) { int c, i; for (i = 0; i < max - 1; i++) { c = getchar(); if (c == '\n') { break; } if (caps) { /* caps が 0 以外の時は大文字→小文字変換を行う */ if (c >= 'A' && c <= 'Z') { c = c - 'A' + 'a'; } } s[i] = c; } s[i] = '\0'; while (c != '\n') { /* バッファのクリアもどき */ c = getchar(); } } void main() { char command[MAX + 1]; char buffer[MAX + 1] = { '\0' }; while (strcmp(command, "quit") != 0) { /* 入力が quit ならループを抜ける */ printf("Command? : "); input(command, sizeof(command), 1); /* 大文字→小文字変換ありでコマンド入力 */ if (strcmp(command, "entry") == 0) { /* バッファに入力モード */ printf("Data? : "); input(buffer, sizeof(buffer), 0); /* 大文字→小文字変換なしでバッファに入力 */ } if (strcmp(command, "display") == 0) { /* 表示モード */ if (buffer[0] == '\0') { printf("No data\n"); } else { printf("%s\n", buffer); } } } }