如何使用带有FIFO的STRUCT

时间:2018-04-18 00:31:26

标签: c data-structures struct fifo

我正在学习" FIFO"在C中,这是我的第一个尝试通过参数将结构传递给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);
    }
}

1 个答案:

答案 0 :(得分:0)

假设pessoas是fifo内存。

在cadastroPretendentes()中,您将获取名称并存储到fifo内存中,而在qstore()中,您正在使用pessoas [0]编写pessoas [0]。

如果另外调用qstore 2次,则数组中的第1和第2个元素将替换为pessoas [0]。

在此代码中,不需要qstore,因为cadastroPretendentes()获取名称并存储在pessoas(fifo memory)