estoy haciendo algo en VC++ para lo cual creo que me facilitaria un poko utilizar
struct para ordenar los datos que posteriormente utilizaria para cargar en un ListView o hacer alguna busqueda X, pero como recien estoy empezando a programar en (VC++ 6.0) no se bien como hacer un Struct array[] sin valor de Array. de seguro que no sera asi o habra alguna forma de hacerlo, pero lo googlie y todos los ej. que encontre el Array tenia un valor asignado y yo en mi caso no se cual va a ser el valor del Array. expongo un ej
#include <windows.h>
#include <stdio.h>
struct people{
LPCTSTR name;
LPCTSTR LastName;
};
char temp[50];
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
people Persons[];
// people * Persons; // <------- CRASH
Persons[0].name = "Aaron";
Persons[0].LastName = "xkiz";
Persons[1].name = "John";
Persons[1].LastName = "Doe";
Persons[2].name = "John";
Persons[2].LastName = "Johnson";
for(int x=0; x<sizeof(Persons);x++){
sprintf(temp, "Person # %i: %s %s",x, Persons[x].name, Persons[x].LastName);
OutputDebugString((LPCTSTR)temp);
}
return 0;
}
lo cual devuelve el error:
Citar
....cpp(13) : error C2133: 'Persons' : unknown size
....cpp(23) : error C2070: illegal sizeof operand
y la verdad no se como resolver eso, es posible hacer un array struct [] ???
Necesitas un arreglo dinámico de estructuras. Algo como esto:
#include <stdio.h>
#include <stdlib.h>
struct people
{
/* Tú cambias los campos, solo es un ejemplo */
int x;
int y;
};
int main(void)
{
unsigned n;
printf("Número de personas : ");
fflush(stdout);
scanf("%u", &n);
struct people *personas = malloc(sizeof(struct people) * n);
unsigned i;
for(i = 0; i < n; i++)
{
printf("personas[%u].x = ", i);
scanf("%d", &personas[i].x);
printf("personas[%u].y = ", i);
scanf("%d", &personas[i].y);
}
free(personas);
return 0;
}
Acomoda los campos a tu conveniencia, nota que hay que liberar la memoria ocupada con free().
gracias por responder.
me surgio un problema con ese code, me tira error:
struct people *personas = malloc(sizeof(struct people) * n);
//error C2440: 'initializing' : cannot convert from 'void *' to 'struct people *' Conversion from 'void*' to pointer to non-'void' requires an explicit cast
otra cosa, yo arrme ese ej para no poner el choclaso de code en lo que estoy trabajando y hacerlo mas simple, pero la onda es que, no puedo asignar un valor al vector, el valor se incrementa dentro en un for.
si no tendria que hacer 2 for(), uno para obtener el valor del vector [n], y el 2º para asinar el valor al personas [n].y.
#include <stdio.h>
#include <stdlib.h>
struct people
{
/* Tú cambias los campos, solo es un ejemplo */
int x;
int y;
};
int main(void)
{
unsigned n;
printf("Número de personas : ");
fflush(stdout);
scanf("%u", &n);
struct people *personas = (struct people *)malloc(sizeof(struct people) * n);
unsigned i;
for(i = 0; i < n; i++)
{
printf("personas[%u].x = ", i);
scanf("%d", &personas[i].x);
printf("personas[%u].y = ", i);
scanf("%d", &personas[i].y);
}
free(personas);
return 0;
}
uh disculpa, me olvide de darte las gracias.....