longitud arreglo

ricardo
06 de Octubre del 2004
solo nesesito conocer la longitud de un arreglo numerico, cuyos elementos hayan sido ya ingresados
como strlen pero para numeros, intente con:
int largo(int a[]){

int i;
i=0;

while(a[i] != ''){
i++;
}

return i;
}
pero me da un numero distinto :(

Alejandro_
06 de Octubre del 2004
sizeof es un "operador" que va a determinar la longitud de tu array en tiempo de compilación; y ese operador forma parte del lenguaje, así que no creo que haya ningún inconveniente en usarlo.

Una forma más genérica para determinar la cantidad de elementos en un array, además de la que ya te han dicho, es:

size_t longitud = sizeof(a)/sizeof(a[0]);

Si el array fuera de objetos de alguna clase o estructura que hayas definido, también hay otra forma más o menos simple de determinar su longitud, pero para enteros... nones, o al menos nada que se me ocurra...

Alejandro

forastero
06 de Octubre del 2004
Hola.
Pasas un puntero a la función. No puedes saber la longitud del arreglo o cadena al pasar un puntero. Y además, como se dijo el carácter nulo ('') es para cadenas y no para enteros. Lo siento pero no lo puedes averiguar, al menos en está función. Otra cosa sería pasar un array ya definido en tiempo de compilación como int largo(int a[N]) donde N es una constante (numérica o tipo #define).
Un saludo.

noel solw
06 de Octubre del 2004
prueba lo siguiente :

int len = sizeof(a)/sizeof(int);

ricardo
06 de Octubre del 2004
no, lo que yo quiero es crear la funcion que cuenta el largo, no usar una hecha.

Karoz
06 de Octubre del 2004
El problema en tu codigo es que el caracter nulo, se pone al final del arreglo solo cuando declaras strings de cierta manera...