我目前正在尝试使用 C 编写一个程序(对 C 很陌生——只学了 2 周),我想通过标准输入从用户那里获取一个输入字符串,其中该字符串有一个字符,后跟 2 个 float (每个 float 之间有空格)。例如:“y 2.1 1.1”。 我的问题是如何获取和存储这 3 个输入,同时确保第一个输入是字符,而后两个输入是 float ?
最佳答案
坚持使用 sscanf()
,但不要忘记检查它的返回值(查看 here )。输入 "y 1u 1" 真正发生的是 sscanf
将读取并存储有效的 char
,然后它将读取并将有效的int
1存入,然后停止,因为“u”不匹配格式串。
下面是示例代码(使用 scanf()
而不是 fgets()
和 sscanf()
)。
char in1;
int in2,in3;
int retval;
/*
char array[100] = {'\0'};
fgets(array, 100, stdin);
retval = sscanf(array, "%c %d %d", &in1, &in2, &in3);
*/
retval = scanf("%c %d %d", &in1, &in2, &in3);
printf("Scanned %d items\n", retval);
printf("Here they come: ");
if(retval > 0) {
printf("%c ", in1);
}
if(retval > 1) {
printf("%d ", in2);
}
if(retval > 2) {
printf("%d", in3);
}
putchar('\n');
关于C 编程 - 用于由空格分隔的 tkens 的 sscanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36235050/