【发布时间】:2016-02-15 00:36:26
【问题描述】:
我无法输入我的“详细信息”,因为它没有给我留下任何空间。
int addTask(NODE **head){
//IGNORE NODES
NODE *p, *temp, *ptr, *a;
DATE d;
p = *head;
a = *head;
char x[32];
char y[32];
char name[32];
char details[128];
int month;
int day;
int year;
int priority;
int intDate;
int i;
printf("\n");
printf("Enter task name: ");
scanf("%s", name);
printf("Enter task details:");
fgets(details, 128, stdin); //PROBLEM LIES HERE
printf("[mm dd yyyy] Enter task deadline: ");
scanf("%d %d %d", &month, &day, &year);
printf("Enter priority: ");
scanf("%d", &priority);
/*code conditions here*/
}
在我的终端中,结果是这样的:
User@Lynn /cygdrive/c/users/user/academic/c
$ gcc -o a Yago_exer11.c
User@Lynn /cygdrive/c/users/user/academic/c
$ ./a
1. Add a task
2. Remove a task
3. Search for a task
4. View all tasks
5. View tasks by priority
6. Exit
Choice: 1
Enter task name: hello
Enter task details:[mm dd yyyy] Enter task deadline: 09 09 09 //PROBLEM
Enter priority: 1
Adding...
我尝试使用 scanf(%^[\n]) 作为替代方案,但结果却是相同的输出。谁能告诉我我的代码有什么问题?
【问题讨论】:
-
呃,哦!不要混合使用
scanf和fgets,因为它们处理换行符的方式不同。最好采取两步法:首先使用fgets读取行,然后使用sscanf扫描这些行或将它们标记化。 -
哦,我明白了!再次感谢你! :D