为什么我的功能不能接受用户输入?

时间:2020-06-07 22:54:49

标签: c io scanf

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功能不起作用。

关于这里可能有什么问题的任何想法?

1 个答案:

答案 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之前使用putsscanf

请注意,最后一个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);