"Escribir un programa con una función que calcule la longitud de una cadena de caracteres. El nombre de la función será LongitudCadena, debe devolver un int, y como parámetro de entrada debe tener un puntero a char.
En esta función no se pueden usar enteros para recorrer el array, usar sólo punteros y aplicar aritmética de punteros.
En main probar con distintos tipos de cadenas: arrays y punteros."
Supongo que no vale esto de recorrer el array con un entero y luego devolver dicho entero, por tanto he probado con esto:
Código
#include <iostream> using namespace std; int LongitudCadena(char*); int main() { char cadena[10]; char *pCadena = 0; cout << "Introduce una cadena como array: "; cin >> cadena; cout << "Su tamano es: " << LongitudCadena(cadena) << ". " << endl; cout << "\nIntroduce una cadena como puntero: "; cin >> *pCadena; cout << "Su tamano es: " << LongitudCadena(pCadena) << ". " << endl; cin.sync(); cin.get(); return 0; } int LongitudCadena(char *a) { char *p, *q; p = a; q = a; while (*a) q++; return q-p; }
Seguro que hay una forma mucho mas simple, pero aun soy nuevo con esto de los punteros y no los comprendo muy bien. Espero que se pueda encontrar el fallo.
Un saludo.