gpt4 book ai didi

c - 使用用户输入填充结构并通过指针访问

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:45 25 4
gpt4 key购买 nike

我试图创建一个由用户填充并通过指针访问的结构。

就目前而言,我没有收到编译器错误,但它不会正确接受输入,我需要输入第二个变量两次,输出是垃圾。

在转向链表之前,我试图了解指针和结构,如有任何帮助,我们将不胜感激。

//struct date

struct data {
int dia;
int mes;
int ano;
};

//struct client

struct cliente {
char nome[15];
int num_conta;
float saldo;
struct data dia_d_mes;
};


// function that returns pointer to struct populated by user

struct cliente *input_cliente()
{
struct cliente *tipo_cliente, n;
SYSTEMTIME st;
GetSystemTime (&st);

tipo_cliente = &n;

printf ("Nome cliente:");
gets (tipo_cliente->nome);
//fflush (stdin);

printf ("Numero da conta:");
scanf ("%d ", &tipo_cliente->num_conta);

printf ("Saldo da conta:");
scanf ("%f ", &tipo_cliente->saldo);

tipo_cliente->dia_d_mes.dia = st.wDay;
tipo_cliente->dia_d_mes.mes = st.wMonth;
tipo_cliente->dia_d_mes.ano = st.wYear;

return tipo_cliente; // return pointer
}

//print client

void print_cliente(struct cliente *tipo_cliente)
{
printf ("%s", tipo_cliente->nome);
printf ("\t%d", tipo_cliente ->num_conta);
printf ("\t%.2f", tipo_cliente ->saldo);
printf ("\t%d/%d/%d\n", tipo_cliente->dia_d_mes.dia, tipo_cliente->dia_d_mes.mes, tipo_cliente->dia_d_mes.ano);
}


int main()
{
struct cliente *novo; //declare a new struct pointer
system ("color 17");
system ("mode 70,10");

novo = input_cliente(); //create new client

system ("cls");

printf ("Nome \t #conta \t Saldo \tData\n");
printf ("============================================\n");

print_cliente (novo); //print new client
}

我一直在研究代码并将指针更改为正常的结构输入,但一直有一个问题。
当显示第二个 printf 并输入 int 时,它不会移动到下一个 printf,光标将移动到命令提示符中的新行。任何想法都会受到赞赏,我尝试了使用指针和不使用指针的不同方法,但我的想法已经用完了。

//返回指向用户填充的结构指针的函数

struct cliente input_cliente(){ 结构客户 tipo_cliente;//初始化结构 系统时间 获取系统时间 (&st);

printf ("Nome cliente:");
gets (tipo_cliente.nome); //accepts this value

printf ("Numero da conta:");
scanf ("%d ", &tipo_cliente.num_conta); //also accepts this value
//after pressing enter goes to a empty line
printf ("Saldo da conta:");
scanf ("%f ", &tipo_cliente.saldo); //the value stored in this variable is the
// value entered in the previous empty line
tipo_cliente.dia_d_mes.dia = st.wDay;
tipo_cliente.dia_d_mes.mes = st.wMonth;
tipo_cliente.dia_d_mes.ano = st.wYear;

return tipo_cliente; // return pointer

最佳答案

input_cliente 返回指向函数内声明的变量的指针。但是,一旦函数结束,该变量的内容就变成未定义的。您应该返回一个实际的 struct cliente(不是指针)或使用 malloc 为将持续超过函数的执行。

关于c - 使用用户输入填充结构并通过指针访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24249862/

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