为啥我的输入功能无法正确输入? [关闭]
Posted
技术标签:
【中文标题】为啥我的输入功能无法正确输入? [关闭]【英文标题】:Why does my input function doesn't get input correctly? [closed]为什么我的输入功能无法正确输入? [关闭] 【发布时间】:2020-09-19 13:28:44 【问题描述】:我是 C 新手。我之前问过这个问题,我知道我的代码中有一个错误,但仍然无法正常工作。 我想从用户那里获取输入并将其存储在分配的内存中。 ptrsptr 和 patientsnum 是全局变量。 ptrsptr 指向另一个分配的内存,该内存存储指向患者数据的指针。
char name[51];
int age=0;
char agestr[3];
char infectiondate [11];
char address[51];
char *patientptr;
char **newptr;
printf("\nEnter the patient name (50 characters at maximum): ");
scanf ("%50s", name);
newptr = (char**) realloc(ptrsptr, patientsnum*sizeof(char *));
if (newptr) ptrsptr = newptr;
else
patientsnum --;
printf ("Not enough memory.\n");
return;
patientptr = (char*) calloc (118, sizeof (char)); // allocation after being sure patient doesn't exist
if (!patientptr)
patientsnum --;
printf ("Not enough memory.\n");
return;
strcpy(patientptr, name);
printf("Enter the patient age: ");
scanf ("%d", &age);
sprintf (agestr, "%2d", age);
strcpy((patientptr + 51),agestr);
printf("Enter the patient date of infection (in form of dd/mm/year): ");
scanf ("%10d", infectiondate);
strcpy((patientptr + 54),infectiondate);
printf("Enter the patient address (50 characters at maximum): ");
scanf ("%50s", address);
strcpy((patientptr + 65),address);
*(ptrsptr+patientsnum-1) = patientptr;
printf ("\nPatient added succesfully.\n");
输出是:
Enter the patient name (50 characters at maximum): John
Enter the patient age: 20
Enter the patient date of infection (in form of dd/mm/year): 20/10/2019
Enter the patient address (50 characters at maximum):
Patient added succesfully.
我无法输入地址。怎么了?
【问题讨论】:
请提供minimal reproducible example。 忽略scanf()
的返回值,后果自负。
使用 scanf 很棘手。从最后一个数字开始,您可能在输入中等待“返回”,这会杀死您的地址。 sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
建议:始终使用fgets()
进行用户输入。
建议:将编译器的警告级别设置为尽可能高,并注意警告!!
【参考方案1】:
嗯,看来我还是个初学者,对scanf
了解不多。但是,看起来错误是将一些整数放入 char 字符串中。
【讨论】:
以上是关于为啥我的输入功能无法正确输入? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我们必须输入 vim ~/.vimrc 而为啥不只输入 vim ~.vimrc? [关闭]
为啥很少有人输入 const 正确的代码? const 正确的代码会编译得更好/更快吗? [关闭]
为啥 Robot Framework、Selenium2Library、Element Text Should Be 关键字无法正确验证输入元素文本?