Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2015, 08:55
rdv316
Invitado
 
Mensajes: n/a
Puntos:
Declarar array de struct sin conocer la cantidad de elementos [C]

Hola gente.
El programa que estoy construyendo tiene una búsqueda por fecha pero desconozco cuantos movimientos van a coincidir con la fecha a buscar.-
Si esto tiene que ver con memoria dinámica no lo puedo seguir porque si bien me falta muy poco para finalizar con el capítulo archivos memoria dinámica es el siguiente.-
Desconozco si se puede crear la estructura y luego en cualquier función declarar un array del tipo struct, tal vez esa sea una solución pero no quiero practicar con esto porque si me funciona seguramente me estaré perdiendo alguna manera más funcional, no me tomen como vago es que quiero (en lo posible) aprender lo máximo del lenguaje.-

Pongo algo de código.-

Código:
.........................
#define MENSAJE printf( "\n\n Pulse [Enter] para continuar..." ); getchar();

typedef struct{
	char b;
	char fecha[11];
	float verduras;
	float almacen;
	char nota[101];
}Super;

Código:
void buscar(FILE *ptrFile, Super *super, int tamStructSuper){
	char pBuscar[11], *p = NULL;
	int ch, ok;
	
	do{
		printf( "\n\n Ingrese fecha a consultat (formato ==> 11/04/2015)....: " );
		fgets(pBuscar, 11, stdin);
		if((p=strchr(pBuscar, '\n'))){
			*p='\0';
		}
		else{
			while((ch = getchar()) !='\n' && ch!=EOF);
		}
		ok = strlen(pBuscar);
		if( ok != 10 || pBuscar[2] != '/' || pBuscar[5] != '/'){			
			ok = 0;
		}
	}while(!ok);

	ok=0;
	rewind( ptrFile);
	while( fread( super, tamStructSuper, 1, ptrFile ) == 1 ){
		if( strstr(pBuscar, super->fecha) != NULL){
			ok++;
		}
	}
	if( ok > 0){
		printf("\n Hubo %d coincidencias", ok);getchar();
	}else{
		printf( "\n\n No existe..." );
		MENSAJE;
	}
}
Saludos.-
Daniel