[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