<div dir="ltr">Hola Fanatidark,<div class="gmail_extra"><br>2013/4/17 fanatidark <span dir="ltr"><<a href="mailto:pandoras_box_789@hotmail.com" target="_blank">pandoras_box_789@hotmail.com</a>></span><br><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">la idea era realizar un ejercicio de esta pagina sobre punteros que usa una funcion para medir la longitus de una palabra mi codigo es el siguente:<br>

<br></blockquote><div><br></div><div style>Veamos el código fuente.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

#include <iostream><br>
#include <stdlib.h><br>
#include <stdio.h><br></blockquote><div><br></div><div style>Deberías usar los nombres estándares:<br></div><div style><br></div><div><cstdlib></div><div style><cstdio><br></div><div style><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

#include <conio.h><br>
<br></blockquote><div><br></div><div style>Este fichero de cabecera ni su biblioteca son estándares.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

using namespace std;<br>
<br>
char cadena[100];<br>
char *p1, *p2;<br></blockquote><div><br></div><div style>No recomiendo usar variables globales, especialmente si estás aprendiendo a programar. Existen demasiados peligros como para justificar su uso.</div><div><br></div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
int loncadena (char a, char b)<br>
{<br>
        return ((a)-(b));<br>
}<br>
<br></blockquote><div><br></div><div style>Esto realmente no realiza la función que quieres, porque simplemente restas caracteres, que implica la resta de sus códigos ASCII.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

int main()<br>
{<br>
        cout<<"ingrese alguna palabra"<<endl;<br>
    cin>> cadena;<br>
    p1=cadena;<br>
    p2=cadena;<br>
    while(*p2!=0)<br>
    {<br>
                p2++;<br>
        }<br>
        cout<< p2-p1<< endl;<br>
        cin.get();<br>
}<br></blockquote><div><br></div><div style>Recuerda que 'main()' debe retornar un entero, que por convenio es 0 (cero), para indicar que el programa ha terminado con éxito.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
mi duda es la siguiente por que si pongo cout<<loncadena(p2, p1)me salta error en el copilador???<br>
<br></blockquote><div><br></div><div style>El problema es que los tipos de los parámetros que pasas a la hora de invocar 'loncadena()' NO son los mismos tipos que en su prototipo. En tu caso, intentas pasar punteros (char *) cuando la función espera recibir caracteres (char). Recuerda que C++ es un lenguaje FUERTEMENTE tipificado. Esto significa que el lenguaje (y el compilador) siempre verifica los tipos de los datos y prototipos para poder evaluar expresiones.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
y como le puedo hacer para que si no ay nada escrito me salga un mensaje diciendome que no escribi nada???<br>
<br>
<br></blockquote><div><br></div><div style>Si no se ha escrito nada, entonces el array, 'cadena', contendrá el carácter nulo, '\0', en su primer elemento; es decir,</div><div style><br></div><div style>cadena[0] == '\0'</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
ya intente poniendo<br>
if(*p1==null)<br></blockquote><div><br></div><div style>En primer lugar, 'null' no existe en C/C++. Sí existe la constante simbólica 'NULL', que se define en varios ficheros estándares de cabecera. Sin embargo, esta constante sirve para representar un puntero nulo, y no un carácter nulo: código ASCII 0 (cero). Por lo tanto, te interesa hacer la comprobación anterior:<br>
<br>if( *p1 == '\0' ) {...}</div><div style><br></div><div style>Recuerda, C++ es un lenguaje FUERTEMENTE tipificado. Va a comprobar los tipos constantemente; si no coinciden, entonces seguramente aparecerá un mensaje de error.</div>
<div><br></div><div><br></div><div style>Espero que esto te oriente.</div><div><br></div><div style>Steven</div><div style><br></div></div></div></div>