void patient_data(){
char name[10];
int ID[4];
int age;
char history[100];
float temp;
int breath;
printf("enter patient data:\n");
scanf("name : %s\n", name);
scanf("ID: %d\n",ID);
scanf("age %d\n",&age);
scanf("history: %s\n", history);
scanf("temp: %f\n",&temp);
scanf("breath: %s\n", breath);
FILE *info;
info = fopen("info.txt","a");
fscanf(info,"%s %d %d %s %f %d",name, ID, &age, history, &temp,&breath);
}
此代码应该接受用户输入的患者数据,并将其保存在以后应访问的文件中,但scanf功能不起作用。关于这里可能有什么问题的任何想法?
scanf'
格式不正确,应该简单地为:scanf(" %9s", name); //<-- added buffer limit
scanf("%d",ID);
scanf("%d",&age);
scanf(" %99s", history); //<-- added buffer limit
scanf("%f",&temp);
scanf("%d", &breath);` // <-- corrected the specifier
如果要打印标签以使用户知道要输入的内容,请在每个printf
之前使用puts
或scanf
。请注意,最后一个
scanf
具有说明符不匹配,它采用整数,但使用字符串说明符。也请注意,
"%s"
说明符是不安全的,对于100个字符的容器,应使用"%99s"
,以避免缓冲区溢出。您拥有的方式,it's no better thangets()
。最后,写入文件的正确功能是
gets()
。