aqui va 1 error.
1>c:\documents and settings\usuario1\escritorio\proyectos vs2008 sdl\entidad.h(91) : error C2057: se esperaba una expresión constante
1>c:\documents and settings\usuario1\escritorio\proyectos vs2008 sdl\entidad.h(91) : error C2466: no se puede asignar una matriz de tamaño constante 0
1>c:\documents and settings\usuario1\escritorio\proyectos vs2008 sdl\entidad.h(91) : error C2133: 'salida' : tamaño desconocido
code:
int Centidad::aloadimagen(char *file,int fmin, int fmax){
// AQUI ES EL ERROR
char salida[strlen(file)];
for(int i=fmin;i<fmax;i++){
remlet('-',file,salida,i+1);
plantilla[i]=IMG_Load(salida);
}
}
espero que me puedan ayudar ,
SALUDOS.
¡Buenas!
Nunca he utilizado VS, pero por el segundo y tercer error, me da la impresion de que no te deja definir la dimension del vector utilizando strlen, y por el primero, tendrias que usar una constante para definir el tamaño, no una expresion...
¡Saludos!
pero por que con otros si?.
en codeblocks a mi amigo le compila y ami en dev-cpp no me a dado ningun problema .
para el numero de caracteres de "char*" usando strlen.
EDITO: e probado a crear un int y darle el valor que devuelve strlen.
pero me salta lo mismo.
No se puede hacer eso, es totalmente absurdo mas que nada por que el compilador tiene que saber el tamaño del array en tiempo de compilacion y strlen es una funcion que se ejecuta en tiempo de ejecucion, es imposible que compile en VS o en GCC o cualquier otro compilador almenos que el propio compilador haga algun trapicheo y te convierta esa variable de stack a heap.
Si quieres hacer eso usa memoria dinamica.
entoces que puedo hacer?.
ejemplo de lo que aria mi funcion.
int Centidad::aloadimagen(char *file,int fmin, int fmax){
// AQUI ES EL ERROR
char salida[strlen(file)];
for(int i=fmin;i<fmax;i++){
remlet('-',file,salida,i+1);
plantilla[i]=IMG_Load(salida);
}
}
aloadimagen("foto",9,12);
char*file seria el valor devuelto por strlen seria 5.
el bucle de abajo con una funcion mia llamada remlet "remplazarletra".
hace lo siguiente:
int remlet(char buscar,char* entrada, char* salida,int num){
char conv[2];
for(int i=0;i<strlen(entrada);i++){
if(entrada[i]==buscar){
strcpy(salida,entrada);
itoa(num,conv,10);
if(num<10){
salida[i+1]='0';
salida[i+2]=conv[0];
}
else {
salida[i+1]= conv[0];
salida[i+2]= conv[1];
}
return 1;
}
}
return 0;
}
resumiendo lo que quiero es que char salida[] tenga una longitud = a la cadena insertada en char*entrada.
alguna idea?.
usa char* salida = new char[strlen(file)+1];
pero acuerdate de usar delete[] cuando no necesites esa variable por que si no tendras un memory leak :xD
otra cosa que puedes hacer es declarar el buffer con un tamaño fijo que sea "seguro".
ok ahora mismo lo pruebo y te digo.
EDITO: me funciono XDDDD. muuuuuuuuuuchas gracias XD ,
aunque despues de esto me salto 1 error raro en otras funcion por ejemplo:
int fun(){
}
ERROR : int fun() tiene que devolver un return .
o algo similar , puse return 0. y lo solucciones
EDITO:
PD: se me olvido poner el delete XD
EDITO: CODE que toy haciendo ... code y exe. code si compilais funcionara "SDL" el exe no se si os funcionara u os ara falta las DLL puesto que no se como crea los exe el VS2008 . tecla "a" para que pege una patada. LINK http://www.4shared.com/file/Tb8P93f7/Proyectos_VS2008_SDL.html