无法为结构数组 ansi c 赋值

Can't assign values to array of structs ansi c

你好定义了这个结构 typdef:

typedef struct{
        int pid;
        int valor;
    }hijo;

但是在为它保留内存之后,我迭代数组为每个结构赋值,但是值没有正确存储:

hijo *retorno;
retorno=malloc(processes*sizeof(hijo));

while (processes > 0) {
        pid = wait(&status);
        int valors = WEXITSTATUS(status);
        retorno[i].valor=valors;
        retorno[i].pid=pid;
        --processes;  // TODO(pts): Remove pid from the pids array.
    }

谢谢。

您需要初始化并递增i。否则你会一直分配给同一个数组元素。

hijo *retorno;
retorno=malloc(processes*sizeof(hijo));
int i = 0;

while (processes > 0) {
    pid = wait(&status);
    int valors = WEXITSTATUS(status);
    retorno[i].valor=valors;
    retorno[i].pid=pid;
    --processes;  // TODO(pts): Remove pid from the pids array.
    i++;
}

或者不更新两个变量,您可以将 iprocesses 进行比较:

for (int i = 0; i < processes; i++) {
    pid = wait(&status);
    int valors = WEXITSTATUS(status);
    retorno[i].valor=valors;
    retorno[i].pid=pid;
}

使用此代码,您正在递减 processes 并且我想您希望为 retorno 赋值。 那么 retorno[i] 应该是 retorno[processes] 对吧?

不然我不明白你想做什么