[C++][AYUDA] problema con sizeof

Iniciado por anonimo12121, 4 Mayo 2010, 16:05 PM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

hola.
Mi problema es que pongo un sizeof en una funcion que tiene de parametro 1 char *. pero no me dice los bytes que tiene la cadena que le meto.
aqui el code.

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;
int fake=0;
void remlet(char buscar,char* entrada, char* salida,int num){
   
    char conv[2];
    //char salida[sizeof(entrada)];
    strcpy(salida,entrada);
    //aqui es con el sizeof
    for(int i=0;i< sizeof entrada;i++){
        // esta variable la creado para saber cuantas veces hace el bucle y me sale 4. creo que el problema en que la variable es 1 puntero .
        fake++;
        if(entrada[i]==buscar){
            itoa(num,conv,10);
            if(conv[0]=='0'){
                salida[i+1]='0';
                salida[i+2]=conv[0];
            }
            else {
                salida[i+1]= conv[0];
                salida[i+2]= conv[1];
            }
            break;
        }
    }
}
char frase[]="personaje-01";
char frase2[]="personaje-44";
int main(int argc,char *argv[]){
   
    remlet('-', frase,frase2,22);
    //a(frase,frase2);
    cout << fake;
   
    cin.get();


}
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Littlehorse

En ese contexto, sizeof te da el tamaño del puntero (4 bytes). Utiliza strlen.
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

anonimo12121

ya se eso de strlen pero ya que estoy quiero encontrar algun soluccion para esto.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Littlehorse

No hay solución. sizeof realiza su tarea en tiempo de compilación. No puede adivinar cual es el tamaño de la cadena en ese contexto, ya que lo que le estas pasando es un puntero.

Si declaras cadenas a nivel global, entonces úsalas. Cualquier contenido declarado a nivel global puede utilizarse en el contexto de cualquier función, por lo tanto no tiene mucho sentido pasarlas como parámetro en el ejemplo que pusiste. Si utilizas las cadenas globales, sizeof te devolverá lo que esperas, si usas un puntero, sizeof te devolverá el tamaño del puntero.
De la forma que lo quieres hacer no hay forma de solucionarlo.

Evita en lo posible las declaraciones globales al menos que realmente las necesites. Aunque como solo están una linea arriba del main, creo que te equivocaste en la declaración.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

anonimo12121

e pensado hacer lo siguiente
crear un variable en la funcion char a[]
hay copiar el contenido del puntero y sacar el valor ahora lo provare.

saludos.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Littlehorse

No tiene sentido, pero en fin, si te pusiste como meta usar sizeof, haya vos  ;D

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

anonimo12121

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Littlehorse

Porque no tiene sentido hacer una copia para luego usar sizeof. strlen te sirve perfectamente y puedes usarlo directamente con el char*.
An expert is a man who has made all the mistakes which can be made, in a very narrow field.