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功能不起作用。
关于这里可能有什么问题的任何想法?
答案 0 :(得分:2)
您的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 than gets()
。
最后,写入文件的正确函数是fprintf
。
fprintf(info,"%s %d %d %s %f %d", name, ID, age, history, temp, breath);