脑子不好真君 2022-11-22 05:48 采纳率: 75%
浏览 13
已结题

C语言结课提问,求帮

我想用scanf输入成员分工,但含有空格和逗号再回车成员年龄就无法输入了,求解
问题图片:

img

用%[^\n]和三个scanf分别输入三个成员工作试过,也无法输入成员年龄

img

img

代码:

  1. #include<stdio.h>
  2. #include<conio.h>//getch()的头文件
  3. #include<stdlib.h>//malloc()的头文件
  4. //定义一个项目
  5. typedef struct _Project//typedef另外命名
  6. {
  7. char number[50];
  8. char name[20];
  9. char time[100];
  10. char boss[20];
  11. double money;
  12. char state[50];
  13. char age[50];
  14. char works[200];
  15. char sex[30];
  16. }Project;
  17. //结点
  18. typedef struct _Node
  19. {
  20. Project Pro;
  21. struct _Node* pNext;//指向下一个结点
  22. }Node;
  23. //函数声明
  24. void InputInformation();//声明录入项目信息的函数
  25. void PrintInformation();//声明保存项目信息的函数
  26. //头结点
  27. Node *g_pHead = NULL;
  28. int main()
  29. {
  30. while (1)
  31. {
  32. printf("--------------------------------------------------\n");
  33. printf("------ welcome to 科技项目管理系统 ------\n");
  34. printf("--------------------------------------------------\n");
  35. printf("------ 1.录入项目信息: ------\n");
  36. printf("------ 2.打印成员信息: ------\n");
  37. printf("------ 3.读取可完成审批: ------\n");
  38. printf("------ 4.添加项目: ------\n");
  39. printf("------ 5.删除项目: ------\n");
  40. printf("------ 6.查询项目: ------\n");
  41. printf("------ 7.保存项目: ------\n");
  42. printf("--------------------------------------------------\n");
  43. printf("请输入选择:\n");
  44. char ch = getch();//从键盘获取一个字符,终止while1)的死循环,并getch()不需要用户输入回车
  45. switch (ch)
  46. {
  47. case'1':
  48. InputInformation();//调用项目编号函数
  49. break;//getch()读取的字符,所以case1’需要用单引号,以下同理
  50. case'2':
  51. PrintInformation();//调用成员信息函数
  52. break;
  53. case'3':break;
  54. case'4':break;
  55. case'5':break;
  56. case'6':break;
  57. case'7':break;
  58. }
  59. }
  60. return 0;
  61. }
  62. //录入项目信息
  63. void InputInformation()//定义项目信息的函数
  64. {
  65. //创建一个新结点
  66. Node *pNewNode = (Node*)malloc(sizeof(Node));
  67. pNewNode->pNext = NULL;
  68. //头插法
  69. if (pNewNode == NULL)
  70. {
  71. g_pHead = pNewNode;
  72. }//如果头结点为空,则新节点为头结点
  73. else
  74. {
  75. pNewNode->pNext = g_pHead;
  76. g_pHead = pNewNode;
  77. }//如果头结点不为空,则新结点为头结点
  78. printf("请输入项目编号:\n");
  79. scanf("%s", pNewNode->Pro.number);
  80. printf("请输入项目名称:\n");
  81. scanf("%s", pNewNode->Pro.name);
  82. printf("请输入项目申报时间:\n");
  83. scanf("%s", &pNewNode->Pro.time);
  84. printf("请输入项目负责人:\n");
  85. scanf("%s", &pNewNode->Pro.boss);
  86. printf("请输入项目预算金额:\n");
  87. scanf("%f", &pNewNode->Pro.money);
  88. printf("请输入项目审批状态:\n");
  89. scanf("%s", &pNewNode->Pro.state);
  90. printf("请输入成员性别:\n");
  91. scanf("%s", pNewNode->Pro.sex);
  92. printf("请输入成员分工:\n");
  93. scanf("%s",pNewNode->Pro.works);
  94. printf("请输入成员年龄:\n");
  95. scanf("s", pNewNode->Pro.age);
  96. printf("录入成功!");
  97. system("pause");
  98. }
  99. void PrintInformation()//定义成员信息函数
  100. {
  101. printf("-----------------------------------------------------");
  102. printf("项目编号 | 成员性别 | 成员分工 | 成员年龄");
  103. printf("-----------------------------------------------------");
  104. //遍历链表,打印录入结果
  105. Node* p=g_pHead;
  106. while(p!=0)
  107. {
  108. printf("%s %d %s %s",p->Pro.number,p->Pro.age,p->Pro.works,p->Pro.sex);
  109. p->pNext;
  110. }
  111. system("pause");
  112. }

展开全部

  • 写回答

1条回答 默认 最新

  • 叶落花枯 2022-11-22 06:05
    关注

    120,输入年龄的scanf里面的%s,漏了个%

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月22日
  • 创建了问题 11月22日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部