[C con Clase] LongitudCadena con Puntero pero noveo lo optimo ????
Juan Antonio
jalr43 en hotmail.com
Dom Ene 7 02:26:14 CET 2007
Hola Luis,
cuando almacenas una cadena siempre se necesita un elemento más. Suponiendo
que se quiere almacenar Juan en una cadena se podría pensar en declarar e
inicializar,
char cadena [4] = "Juan";
con lo que se obtiene un error, siempre es necesario un elemento más porque
al final se almacena siempre ' \0'. Entonces en tu función de obtener la
longitud contiua el bucle hasta que encuentres '\0'.
int LongitudCadena(char *cadena )
{
int longitud ;
for(int i=0;i < 50;i++)
{
if(cadena[i] == '\0')
{
longitud = i;
break;
}
}
El bucle for lo tenías desde 0 hasta la condición <= 50. Si declaras la
variable de 50 elementos (char micadena[50];
) los índices van desde el 0 hasta el 49.
Con respecto a tu problema con el puntero, tienes que hacer que apunte al
primer elemento de la cadena:
char micadena[50];
char *cadena;
cadena = &micadena[0];
int valor = LongitudCadena(cadena);
No es necesario que declares un puntero que apunta al primer elemento de la
cadena y que se lo pases a la función. El siguiente código es equivalente al
anterior:
char micadena[50];
int valor = LongitudCadena(&micadena[0]);
Un saludo,
Juan Antonio.
----- Original Message -----
From: "Luis" <saavedraphp en gmail.com>
To: <cconclase en listas.conclase.net>
Sent: Friday, January 05, 2007 10:46 PM
Subject: [C con Clase] LongitudCadena con Puntero pero noveo lo optimo ????
Buenos dias, una consulta si alguien me podria ayudar en el site este me
piden hacer un programa que mida la longitud de una cadena usando funcion y
un puntero.
Puntero = variable que contiene, ni más ni menos que, una dirección de
memoria
el resultado lo obtube pero mi pregunta es, para que puntero si con char
var[N]
se hace lo mismo, la idea es calcular la longitud y el sizeof(cadena); no me
da resultado.
bueno a todo esto si podrian decirme cual es al diferencia optima que
deveria hacer para que sea correcto Gracias de antemano.
// prueba3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#include <iostream>
int LongitudCadena(char *cadena );
int main(int argc, char* argv[])
{
char micadena[50];
char *cadena;
cadena = micadena; // aquí esta apuntado a micadena[0] y deveria ser
// cadena = &micadena "pero no funciona así ??"
printf("ingrese la cadena a calcular\n");
scanf("%s",&micadena);
int valor =LongitudCadena(cadena);
printf("Longitud %d\n",valor);
getchar();
return 0;
}
int LongitudCadena(char *cadena )
{
int longitud ;
for(int i=0;i<=50;i++)
{
if(!cadena[i])
{
longitud = i;
break;
}
}
return longitud;
}
_______________________________________________
Cconclase mailing list
Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Más información sobre la lista de distribución Cconclase