我在这里输入示例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]);
}
答案 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 */