无法将值分配给结构数组ansi c

时间:2017-05-05 23:54:59

标签: arrays struct c89

您已定义此结构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.
    }

感谢。

2 个答案:

答案 0 :(得分:1)

您需要初始化并增加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;
}

答案 1 :(得分:-1)

使用此代码,您正在减少processes,并且您希望为retorno分配值。 那么retorno[i]应该是retorno[processes]对吗?

否则我不明白你想做什么。