gpt4 book ai didi

c - gets() 不适合我

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:07 24 4
gpt4 key购买 nike

<分区>

我的代码的快速问题。请查看函数 enter()。当我请求姓名并使用 gets() 时,它就好像什么都没有一样跳过它,然后跳转到请求年龄。我做错了什么?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define RECORDS 30
#define LEN 20

/*Questions
Formatting display() - can we use spaces to format?
Is the patient structure supposed to be global or local in enter()?
Why doesn't printf("name: "); scanf("%s", name); require &name?
Make sure you account for first and last names, use getline or something
*/

void enter();

struct patient
{
char name[LEN];
int age;
double highBP, lowBP, riskFactor;
};

struct patient * db[RECORDS];
int counter = 0;

main()
{
int flag = 1;

while (flag == 1)
{
printf("---------------------------------------------------------\n");
printf("|\t(N)ew record\t(D)isplay db\t(U)pdate record |\n");
printf("|\t(L)oad disk\t(W)rite disk\t(E)mpty disk |\n");
printf("|\t(S)ort db\t(C)lear db\t(Q)uit |\n");
printf("---------------------------------------------------------\n");
printf("choose one: ");

char selection, selectionstr[3];
scanf("%s",selectionstr);
selection = selectionstr[0];

//printf("selection %c\n", selection);

if ((selection == 'n') || (selection == 'N'))
{
//New record
enter();
}

// Options omitted...

else
{
printf("not a vaild input\n");
}
}
}

void enter()
{
if (counter < 30)
{
FILE *fptr;
fptr = fopen("db.txt", "a");

char name[LEN];
int age;
double highBP, lowBP;
printf("name: "); //scanf("%s", name);
gets(name);
printf("age: "); scanf("%d", &age);
printf("high bp: "); scanf("%lf", &highBP);
printf("low bp: "); scanf("%lf", &lowBP);
struct patient temp;
strcpy(temp.name, name);
temp.age = age;
temp.highBP = highBP;
temp.lowBP = lowBP;

if ((highBP < 120) && (lowBP < 80))
temp.riskFactor = 0;

if (((highBP <= 120) && ((lowBP > 80) && (lowBP <= 90))) || ((highBP <= 80) && ((lowBP > 120) && (lowBP <= 130))))
temp.riskFactor = 1;

if (((highBP <= 120) && ((lowBP > 90) && (lowBP <= 100))) || ((highBP <= 80) && ((lowBP > 130) && (lowBP <= 140))))
temp.riskFactor = 4;

else
temp.riskFactor = 5;

if ((temp.riskFactor > 0) && (temp.age > 50))
temp.riskFactor += 0.5;

db[counter] = &temp;
//fprintf(fptr, "%s, %d, %f, %f, %f\n", db[counter]->name, db[counter]->age, db[counter]->highBP, db[counter]->lowBP, db[counter]->riskFactor);
printf("%s, %d, %f, %f, %f\n", db[counter]->name, db[counter]->age, db[counter]->highBP, db[counter]->lowBP, db[counter]->riskFactor);
counter++;

fclose(fptr);
}

else
printf("database full");


/*db[counter] = (struct patient *) malloc(sizeof(struct patient));


printf("name: "); scanf("%s", (*db[counter]).name);
printf("age: "); scanf("%d", (*db[counter]).age);
printf("high bp: "); scanf("%d", (*db[counter]).highBP);
printf("low bp: "); scanf("%d", (*db[counter]).lowBP);


//db[counter] = &temp;
printf("%d", sizeof(db[counter]));
//printf("%s", (db[counter])->name);
printf("%s, %d, %f, %f\n", db[counter]->name, db[counter]->age, db[counter]->highBP, db[counter]->lowBP);
counter++;*/
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com