Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Comprobar la longitud de una cadena

Estas en el tema de Comprobar la longitud de una cadena en el foro de C/C++ en Foros del Web. Estoy aprendiendo C/C++ y he hecho el siguiente programa con una función para comprobar la longitud de una cadena, pero me tira error al ejecutarlo ...
  #1 (permalink)  
Antiguo 02/08/2008, 08:14
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 17 años, 11 meses
Puntos: 0
Comprobar la longitud de una cadena

Estoy aprendiendo C/C++ y he hecho el siguiente programa con una función para comprobar la longitud de una cadena, pero me tira error al ejecutarlo y meterle la cadena (el compilador no tira ni errores ni warnings).

El código en cuestión es el siguiente:

Código:
#include <stdio.h>

int LongitudCadena(char*);

int main (void)
{
    char *string;
    printf("\n\nVamos a calcular la longitud de una cadena de caracteres, payo.\nIntroduce la cadena: ");
    fflush(stdin); scanf("%s",&string);
    printf("\nLongitud de la cadena: %d letras.\n",LongitudCadena(string));
    return 0;
}

int LongitudCadena (char *cadena)
{
    int j=0;
    while (cadena[j] != '\0') {j++;}
    return j;
}
¿Qué estoy haciendo mal? Un saludo
  #2 (permalink)  
Antiguo 02/08/2008, 08:44
 
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires, Mar del plata
Mensajes: 250
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Comprobar la longitud de una cadena

Se me ocurre por ahi, de que cuando termines de ingresar el string, le pongas '\0' como para que sepa la terminacion del string...
Proba haciendo esto, y cualquier cosa pregunta de nuevo...
Estaria que pongas el error que te tira para que podamos ayudarte mejor...

De cualquier manera, supongo que quieres hacer tu una funcion para contar los caracteres, pq existe la llamada strlen que hace lo mismo...


saludos!
  #3 (permalink)  
Antiguo 02/08/2008, 08:53
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Comprobar la longitud de una cadena

Buenas, soy nuevo en este foro. Y a mi me pasava lo mismo, con los char*, lo que tienes que hacer es el siguiente:

#include <stdio.h>

int LongitudCadena(char*);

Código:
int main (void)
{
    char string[50]; // Tienes que hacer un vector de char
    printf("\n\nVamos a calcular la longitud de una cadena de caracteres, payo.\nIntroduce la cadena: ");
    fflush(stdin); scanf("%s",&string);
    printf("\nLongitud de la cadena: %d letras.\n",LongitudCadena(string));
    return 0;
}

int LongitudCadena (char *cadena)
{
    int j=0;
    while (cadena[j] != '\0') {j++;}
    return j;
}

/* No hace falta que cambies los parametros de la funcion, ya que los vectores se pueden considerar como direcciones.*/
Saludos, si esto no funciona comenta

PD: Tienes razon Alemanarg, hay una funcion que sirve para eso.
  #4 (permalink)  
Antiguo 02/08/2008, 09:52
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Comprobar la longitud de una cadena

Muchas gracias por responder. Sí, conozco la funcion strlen, pero el caso es que tengo que hacer mi propia función para contar los caracteres.

Respecto a lo que mencionó WaRc3L, sí, el declarar string como un array funciona, pero no comprendo por qué no lo hace de igual forma si lo declaro como un puntero, como había hecho inicialmente, ya que a efectos prácticos viene siendo similar.

Las cadenas con espacios cuenta hasta antes del primer espacio, pero bueno, lo supondré como normal.
  #5 (permalink)  
Antiguo 02/08/2008, 12:29
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Comprobar la longitud de una cadena

Buenas Antonio, el problema no es que en un char* no se pueden contar los caracteres, el problema es que no puedes entrar una cadena en un char*.

No se si voy en buen camino, pero creo que es porque char* solo tiene que tener direcciones, y lo que hicimos nosotros era poner en un char* una direccion invalida o algo asi ( una cadena, no es una direccion ). Creo que es esto, no estoy seguro.

Código:
     char prueva = 'p';
     char* pprueva = &prueva;
     cin >> *pprueva;
El codigo de arriba funciona, si entras un solo caracter. Pero fijate, que en el codigo de arriba, yo no pongo valor en la direccion, si no en prueva( un char normal ).

Saludos, y espero que te haya servido, y si no comenta
  #6 (permalink)  
Antiguo 04/08/2008, 14:27
 
Fecha de Ingreso: agosto-2008
Ubicación: Mi casa!!! Perú-Aqp
Mensajes: 28
Antigüedad: 15 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Comprobar la longitud de una cadena

///holaaa soy nueva en esto pero ahi trate de mejorar tu codigo y si sale ahora si tu lo tienes mejor lo pones :D saludos suerte!!!


#include <stdio.h>

int LongitudCadena(char c[]);// solo le cambie eso

int main (void)
{
char c[200];//aqui tb le cambie


printf("\n\nVamos a calcular la longitud de una cadena de caracteres, payo.\nIntroduce la cadena: ");
fflush(stdin); scanf("%s",&c);
printf("\nLongitud de la cadena: %d letras.\n",LongitudCadena(c));
return 0;
}

int LongitudCadena (char *cadena)
{
int j=0;
while (cadena[j] != '\0') {j++;}
return j;
}
  #7 (permalink)  
Antiguo 03/04/2010, 13:21
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Respuesta: Comprobar la longitud de una cadena

Hola, puedes usar la funcion strlen(string) para obtener la longitud de una cadena sin tener que hacer una funcion para la misca causa!

MIRA EL CODIG:

#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{

char frase[100];

printf("Ingrese frase: ");
scanf("%s",&frase);

int longitud = strlen(frase);

printf("La cantidad de caracteres de la frase es: %d",longitud);

printf("\n");
system("PAUSE");
return 0;
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:45.