For循环跳过,计数器增加

时间:2020-06-03 05:59:41

标签: c for-loop

我想编写一个程序,以获取有关学生姓名,年级和生日的数据,并将其保存到结构中。我已经编写了一个“ for循环”来执行此操作,但是随着我的增加,我的循环无法正常工作。 编辑: 所以我的循环在i = 0时工作良好,但是当我变高(i = 1)时,它无法正确扫描信息。

输入:

<input id="name-input" />
<span>Hello, </span><span id="name-output">Visitor</span>

**

       name:a
       birthdate:79/4/18
       grades:20 20 20
       name:b
       birthdate:76/12/2
       grades:16 13 19

       Output:
       Enter student's name: a
       Enter student's birthday(y/m/d): 79 4 18 
       Enter student's grades: 20 
       Enter student's grades: 20 
       Enter student's grades: 20 
       Enter student's name: 
       Enter student's birthday(y/m/d): 
       b
       Enter student's grades: 
       Enter student's grades: 
       Enter student's grades:

1 个答案:

答案 0 :(得分:-1)

您应该这样做:

scanf("%d/%d/%d", &list[i].birthdate.year, &list[i].birthdate.month, &list[i].birthdate.day);

代替:

scanf("%d%d%d",&list[i].birthdate.year,&list[i].birthdate.month,&list[i].birthdate.day);

警告:请勿使用gets(),这很危险。您可以按以下方式替换该语法:

fflush(stdin); // MUST REQUIRED OR INPUT WILL BE SKIPPED
fgets(list[i].name, 30, stdin);

示例输出:

Enter student's name:
a
Enter student's birthday(y/m/d):
2003/03/05
Enter student's grades:
12
Enter student's grades:
35
Enter student's grades:
66
Enter student's name:
b
Enter student's birthday(y/m/d):
2005/02/01
Enter student's grades:
44
Enter student's grades:
88
Enter student's grades:
5
相关问题