我想用scanf输入成员分工,但含有空格和逗号再回车成员年龄就无法输入了,求解
问题图片:
用%[^\n]和三个scanf分别输入三个成员工作试过,也无法输入成员年龄
代码:
- #include<stdio.h>
- #include<conio.h>//getch()的头文件
- #include<stdlib.h>//malloc()的头文件
-
-
-
- //定义一个项目
- typedef struct _Project//typedef另外命名
- {
- char number[50];
- char name[20];
- char time[100];
- char boss[20];
- double money;
- char state[50];
- char age[50];
- char works[200];
- char sex[30];
- }Project;
-
-
-
- //结点
- typedef struct _Node
- {
- Project Pro;
- struct _Node* pNext;//指向下一个结点
- }Node;
-
-
-
- //函数声明
- void InputInformation();//声明录入项目信息的函数
- void PrintInformation();//声明保存项目信息的函数
-
-
-
- //头结点
- Node *g_pHead = NULL;
-
-
-
- int main()
- {
- while (1)
- {
- printf("--------------------------------------------------\n");
- printf("------ welcome to 科技项目管理系统 ------\n");
- printf("--------------------------------------------------\n");
- printf("------ 1.录入项目信息: ------\n");
- printf("------ 2.打印成员信息: ------\n");
- printf("------ 3.读取可完成审批: ------\n");
- printf("------ 4.添加项目: ------\n");
- printf("------ 5.删除项目: ------\n");
- printf("------ 6.查询项目: ------\n");
- printf("------ 7.保存项目: ------\n");
- printf("--------------------------------------------------\n");
- printf("请输入选择:\n");
- char ch = getch();//从键盘获取一个字符,终止while(1)的死循环,并getch()不需要用户输入回车
- switch (ch)
- {
- case'1':
- InputInformation();//调用项目编号函数
- break;//getch()读取的字符,所以case‘1’需要用单引号,以下同理
- case'2':
- PrintInformation();//调用成员信息函数
- break;
- case'3':break;
- case'4':break;
- case'5':break;
- case'6':break;
- case'7':break;
- }
- }
- return 0;
- }
- //录入项目信息
- void InputInformation()//定义项目信息的函数
- {
- //创建一个新结点
- Node *pNewNode = (Node*)malloc(sizeof(Node));
- pNewNode->pNext = NULL;
- //头插法
- if (pNewNode == NULL)
- {
- g_pHead = pNewNode;
- }//如果头结点为空,则新节点为头结点
- else
- {
- pNewNode->pNext = g_pHead;
- g_pHead = pNewNode;
- }//如果头结点不为空,则新结点为头结点
- printf("请输入项目编号:\n");
- scanf("%s", pNewNode->Pro.number);
-
- printf("请输入项目名称:\n");
- scanf("%s", pNewNode->Pro.name);
-
- printf("请输入项目申报时间:\n");
- scanf("%s", &pNewNode->Pro.time);
-
- printf("请输入项目负责人:\n");
- scanf("%s", &pNewNode->Pro.boss);
-
- printf("请输入项目预算金额:\n");
- scanf("%f", &pNewNode->Pro.money);
-
- printf("请输入项目审批状态:\n");
- scanf("%s", &pNewNode->Pro.state);
-
- printf("请输入成员性别:\n");
- scanf("%s", pNewNode->Pro.sex);
-
- printf("请输入成员分工:\n");
- scanf("%s",pNewNode->Pro.works);
-
- printf("请输入成员年龄:\n");
- scanf("s", pNewNode->Pro.age);
-
- printf("录入成功!");
- system("pause");
- }
-
-
- void PrintInformation()//定义成员信息函数
- {
- printf("-----------------------------------------------------");
- printf("项目编号 | 成员性别 | 成员分工 | 成员年龄");
- printf("-----------------------------------------------------");
-
- //遍历链表,打印录入结果
- Node* p=g_pHead;
- while(p!=0)
- {
- printf("%s %d %s %s",p->Pro.number,p->Pro.age,p->Pro.works,p->Pro.sex);
- p->pNext;
- }
- system("pause");
- }
-