2014-git-work/cpp/aimaina/util.c

72 lines
1.2 KiB
C
Raw Normal View History

2012-08-28 23:07:07 +09:00
/*
util.c
(C)2012 B11T3074C, B11T3011K - MIT License
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// 文字列版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;
}