C- SCANF的麻烦要获得2个输入:用户的整数和字符串



当我输入年龄输入" 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立即终止。

相关内容

  • 没有找到相关文章

最新更新