/* util.c 文字列操作のための関数群 (C)2012 B11T3074C, B11T3011K - MIT License */ #include #include #include #include // 文字列版tolower() char *strtolower(char *s){ char *p; for(p=s; *p != EOF; p++){ *p = tolower(*p); } return s; } // 1行入力 void input_line(char *buff, size_t size){ char *p; if(fgets(buff, size, stdin) == NULL){ exit(1); } // 改行コードを削除 for(p=buff; *p != '\n'; p++); *p = '\0'; } // "y", "n"で選択("n"ならば0を返す) int select_y(char ch){ char buff[1024]; for (;;){ input_line(buff, 1024); strtolower(buff); if (strcmp(buff, "y") == 0){ return 1; }else if (strcmp(buff, "n") == 0){ return 0; }else{ switch(ch){ case 'y': case 'Y': return 1; case 'n': case 'N': return 0; } fputs("yまたはnを入力してください\n", stderr); } } } // 文字列を入力(defstr:入力がないときデフォルトで返す文字列) char *input_string(char *prompt, char *defstr){ char buff[1024]; printf("%s", prompt); input_line(buff, 1024); if(buff[0] != '\0'){ // 空でない場合 free(defstr); return strdup(buff); }; return defstr; }