Ayuda: Recorrer cadenas usando strcmp (alternativas), carácter '/0'.

Iniciado por Tolkien, 1 Junio 2014, 21:56 PM

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

Tolkien

Buenas a todos! Es la primera vez que posteo algo en un foro :huh: así que espero no incumplir ninguna norma. Mi pregunta es la siguiente:

Tengo un array de objetos, donde una de sus atributos es el nombre. Mi intención es recorrer el array de objetos y mostrar todos los objetos que tengan un nombre distinto de '/0' que según tengo entendido sirve para indicar el final de una cadena de caracteres.

[

for (hueco=0; hueco<TAMANHO_MAX; hueco++)   {
        if (BasedeDatos[hueco].nombre[0]=='\0')
            break;
    }
    if (hueco==TAMANHO_MAX){
        return ERROR;}
    BasedeDatos[hueco] = nuevaPoblacionBacterias;
    return hueco;



Esto en C me lo permitía hacer, sin embargo, al crear el objeto, el nombre de tipo char* no permite igualar un nombre a '/0' sino a "/0", que no me vale. ¿Alguna solución para esto?

Otro problema que he encontrado es que no me deja hacer la igualación del if como tal, si no que tengo que utilizar un strcmp para igualarlo y claro, no puedo igualarlo al famoso '/0'... ¿Alguna ayuda? ¿Alguna forma de compararlo para ver si está vacío distinta?



char * nombre= BasedeDatos[hueco].getnombre(); //porque nombre es protegido
        if(strcmp(nombre, "/0")==0) //teniendo problemas aquí también para hacer '/0'
            break;
    }



Espero haberme explicado bien!!! Muchas gracias por vuestra ayuda de antemano!! Un saludo!!!!!!!!! ;D ;D ;D ;D

ivancea96

"\0" es una dirección de memoria. La dirección de la cadena "\0".
'\0' es un caracter. El caracter nulo o 0.

El strcmp() te permite comparar 2 cadenas. Es por eso, por lo que debes poner "\0" y no '\0'.

Por si acaso, decir que cadena=="\0" sería erróneo, ya que así comparas dos direcciones de memoria, que serán muy probablemente diferentes.

.nombre[0]=='\0' si es correcto, ya que
  • retorna el primer caracter, y lo comparas satisfactoriamente con el caracter '\0'.

    Espero que te valga :3

Tolkien

Muchas gracias! No sabía que "\0" era el carácter nulo o vacío y que era lo mismo que '\0' pero que este es un carácter... un poco noob yo  ;D ;D

Ya he solucionado el problema, con el string compare. Muchas gracias!! ;-) ;-) :laugh: :laugh: