/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ayuda funciones de strings

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
twiny14



Registrado: 25 Jun 2014
Mensajes: 2

MensajePublicado: 25/06/2014 2:44 pm
Título: Ayuda funciones de strings

Buenas! Soy nueva en el foro y también programando, empecé este año en la universidad a aprender C.
Tengo un par de dudas: me pidieron que haga esta función
unsigned int my_strlen (char *str);
donde:
char *str es un puntero a char que contiene la dirección de inicio de una cadena de caracteres
Retorna: longitud en bytes de la cadena en un unsigned int.

Yo escribí este código, pero me tira error al compilarlo. No sé si estará bien el algoritmo, o cuál es la razón de que no funcione.

unsigned int my_strlen (char *str)

{
unsigned int valor ;

valor = 0 ;

while ( *str != '\0' ) {

valor += 1 ;
str ++ ; }

return valor ;

}

Desde ya, gracias!
Volver arriba
vangodp



Registrado: 25 Ene 2014
Mensajes: 30

MensajePublicado: 25/06/2014 4:07 pm
Título:

A mi me funciona.
Sera que no le estas llamando la función de forma inadecuada?
De todas formas te la dejo aqui para que pruebes y veas.
http://codepad.org/jyJkTjqb
Código:

#include <stdio.h>

unsigned int my_strlen ( char* );

int main ( void ) {

    char cadena[] = "wacalae";

    printf( "%d", my_strlen ( cadena ) );
   
    getchar ();
}

unsigned int my_strlen ( char *str ){
    unsigned int valor ;
   
    valor = 0 ;
   
    while ( *str != '\0' ) {
   
        valor += 1 ;
        str ++ ;
    }
   
    return valor ;
}

Suerte Wink
Volver arriba
twiny14



Registrado: 25 Jun 2014
Mensajes: 2

MensajePublicado: 25/06/2014 4:12 pm
Título:

Muchas gracias!
Ahi lo probe como lo mandaste y funcionó, estaba llamando mal a la función xD.
Errores de principiante supongo jajaja.
Gracias otra vez Smile
Volver arriba
vangodp



Registrado: 25 Ene 2014
Mensajes: 30

MensajePublicado: 25/06/2014 6:21 pm
Título:

Tema de punteros es algo complicado pero no tanta. Y un array es como un puntero que apunta a la primera posición de una cadena, cosa que contribuye a mas lio.
cuando en una función esperas un puntero debes pasar la dirección, pero realmente lo que guarda el nombre de un array es esa dirección.
si tienes una funcion foo(char*c) y espera una variable debes poner & antes de la variable de modo que cuando la llamo foo(&unavariable);
Pero con el array la cosa cambia solo pongo el nombre que es lo mismo que pasar la direccion entonces pasar un puntero de una variable es &unavariable y un array no necesitas el & delante solo pasas unarray.
Otra cosa es que quieras pasar solo una casilla de un array y eso ya es así: foo(&unarray[10]); eso pasa solo la dirección de lo que contiene en la casilla 10 del array Wink
Practicar y practicar eso es todo.
No te desesperes si no consigues una cosa, usa los foros y ten paciencia siempre. Wink
Suerte Wink
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com