当我输入年龄输入" 20"命中输入时,它进入了一条新行,再次击中输入,它再次转到新线路。无论我打了多少次输入输入,直到我键入" harri"或任何字符/单词之前,它都不会摆脱困境,然后它从代码中删除,然后显示下一行代码。这是为什么?如何修复它,以便当我输入" 20"输入时,它将执行下一行代码(printf(" Please enter your namen")
(?
输出:输出
void print_Struct_Element(List *list) {
printf("String name: %sn",list->head->name);
printf("Age data: %dn",list->head->age);
printf("head address %pn",list->head );
printf("tail address %pn",list->tail );
printf("head value %pn",&list->head );
printf("tail value %pn",&list->tail );
}
int main() {
char name[10];
int age, count;
printf("Please enter your age ");
scanf("%dn",&age);
printf(" Please enter your namen");
scanf("%sn",name);
List moneyManagerList;
insertAtHead(&moneyManagerList,name,age );
print_Struct_Element(&moneyManagerList);
return 0;
}
这是我的另一尝试;全部失败:
int main() {
char name[10];
int age, count;
// printf("Please enter your name and age n ");
// sscanf("harrison 30", "%s %d",name, &age );
printf("Please enter your age ");
//fgets(age, 5, stdin);
scanf("%dn",&age);
printf(" Please enter your namen");
fgets(name,10, stdin);
//scanf("%sn",name);
List moneyManagerList;
insertAtHead(&moneyManagerList,name,age );
//moneyManagerList.head->name = strcpy(moneyManagerList.head->name, name );
//printf("head string name %sn",moneyManagerList.head->name );
print_Struct_Element(&moneyManagerList);
return 0;
}
github链接:https://github.com/lambigini87/linked-link-moneymanager-project/blob/master/master/mains.c
我的答案可能是评论,但我没有足够的积分来评论。因此,这里是 - 摆脱scanf函数中的" n"。
请从scanf中删除 n
。
scanf("%d",&age);
并且,如果您有任何整数/float读取语句,则它将尝试读取整数/float,直到给出一个值。但是,如果您在控制台中为整数提供字符串,则scanf
立即终止。