我编写了一个程序,该程序接受用户的值,然后在for循环中迭代该值。在for循环中,我接受要存储在数组中的数字。 我的问题是for循环所接受的值比用户指定的值多。
int main()
{
int i = 0;
int a;
int no_of_boxcars = 0;
double array[10];
double boxcart_wt = 0;
//printf("Enter the no of wagons");
scanf_s("%d", &no_of_boxcars); // no of boxcars
for (i = 0; i<=no_of_boxcars;++i)
{
printf("%d \t", i);
scanf_s("%lf ", &boxcart_wt); //weight in boxcar
array[i] = boxcart_wt;
}
}
如果用户输入3,则应该接受3个值
for (i = 0; i<no_of_boxcars;++i)
{
//but here accepts 4 values
}
如果用户输入3,则应该接受4个值,如果
for (i = 0; i<=no_of_boxcars;++i)
{
//and here accepts 5 values
}
答案 0 :(得分:1)
C中的索引从 _getData() async{
FirebaseUser user = await FirebaseAuth.instance.currentUser();
String uid = user.uid.toString();
var snapshots =
Firestore.instance.collection('userinfo').document(uid).snapshots();
return snapshots;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text('Retrieve Text Input'),
),
body: new Container(
padding: EdgeInsets.only(top: 20.0, left: 10.0, right: 10.0),
child: new StreamBuilder(
stream: _getData(),
builder: (context, snapshot) {
if (snapshot.hasData) {
var userDocument = snapshot.data;
return new Column(
children: <Widget>[
TextFormField(
initialValue: userDocument["name"].toString(),
//controller: _AdContr,
decoration: new InputDecoration(
labelText: 'Name',
fillColor: Colors.white,
border: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(25.0),
borderSide: new BorderSide(),
),
//fillColor: Colors.green
),
),
SizedBox(height: 20),
TextFormField(
//initialValue: Text(userDocument["Surname"]).toString(),
//controller: _AdContr,
decoration: new InputDecoration(
labelText: 'Surname',
fillColor: Colors.white,
border: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(25.0),
borderSide: new BorderSide(),
),
//fillColor: Colors.green
),
)
],
);
}
}),
),
);
}
开始。在您的for循环中,您从0..n-1
开始,那太多了。更改
0..n
到
for (i = 0; i<=no_of_boxcars;++i)
答案 1 :(得分:0)
scanf
格式的空格匹配 any 空格和任意数量的连续空格。
尾随空格的问题是scanf
必须继续读取,直到它读到不是空格的东西为止,否则它将不知道空格何时结束
这导致您需要提供一些额外的非空白输入的问题。
对于除两种格式("%c"
和"%["
)以外的所有格式,scanf
函数都会自动读取并丢弃前导空白。因此,通常不需要在格式字符串中包含空格。也许这两种格式不会跳过空格。
阅读例如this scanf
(and family) reference了解更多详情。