如何在C中获取我的最后一个输入(浮点)数据?

时间:2017-07-28 08:26:09

标签: c

我在这里输入示例101-Name-3.4但是没有输入3.4。它没有显示在输出中。我该如何解决这个问题?

for(i=0; i<n; ++i){
    printf("Enter ID-Name-CGPA receptively: ");
    scanf("%lld-%[^-]s-%f", id[i], name[i], cgpa[i]);

}

1 个答案:

答案 0 :(得分:2)

您需要从格式字符串中删除scanset指令中的尾随s

scanf("%lld-%[^-]-%f", id[i], name[i], cgpa[i]);

s不是scanset指令的一部分,因此scanf()正在尝试并失败,以匹配输入中的s。如果代码检查来自scanf()的调用的返回值,则可以检测到这种情况,这始终是一种很好的做法。

此外,没有显示声明,但如果id[]被声明为long long int的数组,并且cgpa[]被声明为float的数组,那么应使用地址运算符:

int ret_val = scanf("%lld-%[^-]s-%f", &id[i], name[i], &cgpa[i]);
/* ret_val should be 3 */