我想知道在C中有没有办法提示用户输入2个不同的值, 然后将这两个值分别存储在一个用户条目中。例如:
Enter your age and blood type : 34 AB
然后我们分别存储两个内容,如
fgets(string,string, 64, 64, stdin);
显然,这不会起作用,但在C中是否有可能。我对C(2天)很新。我知道在Java中你可以使用main和grab命令行条目中定义的args [],其中用户输入中的每个空格都是args数组中的不同元素。
答案 0 :(得分:8)
args
主要用于C语言,但传统名称为argv
(参数向量),如int main(int argc, char **argv)
。
您也可以使用scanf,如scanf("%d %s", &age, blood_type);
。
处理用户输入时,第三种(通常是推荐的方法)是将输入与分析输入分开,如:
fgets(line, sizeof line, stdin);
sscanf(line, "%d %s", &age, blood_type);
上述代码的更完整版本,并进行错误检查:
char line[100];
int age;
char blood_type[100];
if (fgets(line, sizeof line, stdin) == NULL ||
sscanf(line, "%d %s", &age, blood_type) != 2) {
fprintf(stderr, "Couldn't read age and blood type. Sorry.\n");
exit(EXIT_FAILURE);
}
由于line
包含最多99个字符,加上标记字符串结尾的'\ 0',我们无法在变量blood_type
中获得溢出。否则,我们可以使用%99s
而不是%s
来限制可以放入blood_type
的字符数。
答案 1 :(得分:0)
目前最好的方法是
char string[100];
if (fgets(string, sizeof(string), stdin) != NULL) {
// split the string here to extract the "n" values
}
答案 2 :(得分:-1)
另外一个选项(取决于您的环境) - man getopt
。