我正在学习C语言中的“ FIFO”,这是我的第一个代码,试图通过参数将结构传递给FIFO函数,但是它没有按预期方式工作……而且我不知道为什么。有人可以帮我解释一下我在做什么错吗?
如果你们很难理解,我用葡萄牙语编写了我的代码,请告诉我我会翻译成英语。
#define TAMANHO 3
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
typedef struct
{
char Nome[20];
} pretendentes;
pretendentes // nome da estrutura
pessoas[10]; // vetor de estrutura
int main(void)
{
setlocale(LC_ALL, "");
cadastroPretendentes(pessoas);
qstore(pessoas);
}
void qstore(pretendentes *Pessoas)
{
int pfinal = 0;
int pinicial = 0;
if(pinicial == TAMANHO)
{
printf("A fila está cheia.");
return;
}
pessoas[pinicial] = Pessoas.Nome;
pinicial++;
}
void cadastroPretendentes(pretendentes *Pessoas)
{
int i;
for(i = 0; i < TAMANHO; i++)
{
printf("Insira o nome do pretendente %d: ", i+1);
scanf("%s", (*(Pessoas + i)).nome);
}
}
最佳答案
假设比索是fifo记忆。
在cadastroPretendentes()中,您将获取名称并存储到fifo内存中;在qstore()中,您将使用pessoas [0]编写pessoas [0]。
如果再次两次调用qstore,则数组中的第1个和第2个元素将被pessoas [0]替换。
在此代码中,由于cadastroPretendentes()获得名称并将其存储在比索(FIFO内存)中,因此不需要qstore