无法为结构数组 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++;
}
或者不更新两个变量,您可以将 i
与 processes
进行比较:
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]
对吧?
不然我不明白你想做什么
你好定义了这个结构 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++;
}
或者不更新两个变量,您可以将 i
与 processes
进行比较:
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]
对吧?
不然我不明白你想做什么