elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con punteros  (Leído 3,262 veces)
cazagavilan

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Duda con punteros
« en: 13 Abril 2012, 05:03 am »

Hola, tengo este codigo en el que se calcula la longitud de una cadena de caracteres. El problema es que cuando introducen un espacio se para el contador...

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int longitudCadena(char* );
  6.  
  7. int main()
  8. {
  9. char cadena[50];
  10. cout <<"Introduzca su frase a calcular: " << endl;
  11. cin >> cadena;
  12. longitudCadena(cadena);
  13. cout << "El tamaño de la frase es de: " << longitudCadena(cadena) << " Caracteres." << endl;
  14. system("pause");
  15. return 0;
  16. }
  17. int longitudCadena(char* cadena)
  18. {
  19.  
  20. int valor = 0;
  21. for(;*cadena != 0; valor++, cadena++);
  22.  
  23. return valor;
  24. }
  25.  

Muchas gracias.


En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: Duda con punteros
« Respuesta #1 en: 13 Abril 2012, 06:02 am »

la parte de
Código:
return valor; 
adonde la usas?


En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Duda con punteros
« Respuesta #2 en: 13 Abril 2012, 06:10 am »

En lugar de cin tenés que usar cin.getline();
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int longitudCadena(char* );
  5.  
  6. int main(){
  7. char cadena[ 50 ];
  8. cout <<"Introduzca su frase a calcular: " << endl;
  9. cin.getline( cadena,50 );
  10. longitudCadena( cadena );
  11. cout << "El tamaño de la frase es de: " << longitudCadena(cadena) << " Caracteres." << endl;
  12. cin.get();
  13. return 0;
  14. }
  15. int longitudCadena( char* cadena ){
  16. int valor = 0;
  17. for(;*cadena != 0; valor++, cadena++);
  18. return valor;
  19. }
En línea

cazagavilan

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Re: Duda con punteros
« Respuesta #3 en: 13 Abril 2012, 18:51 pm »

Me puedes explicar que hace aqui exactamente cin.getline? Lo que yo mas o menos recuerdo es que evita que introduzcas mas caracteres de los que marca (cin.getline( cadena,50)).
« Última modificación: 13 Abril 2012, 18:53 pm por cazagavilan » En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Duda con punteros
« Respuesta #4 en: 13 Abril 2012, 22:13 pm »

Si vos usas cin con el operador >> solo vas a ingresar bloques de caracteres sin espacios. La cadena termina cuando se encuentra uno.
En este caso cin.getline() permite que ingreses 50 caracteres sin importar si uno de ellos es un espacio o no. también podés pasarle como tercer argumento un delimitador.
Aca un poco más de info:
http://www.minich.com/education/wyo/cplusplus/cplusplusch10/getfunction.htm
« Última modificación: 13 Abril 2012, 22:18 pm por CrisQC » En línea

cazagavilan

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Re: Duda con punteros
« Respuesta #5 en: 14 Abril 2012, 05:47 am »

Muchas gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] - Duda punteros
Programación C/C++
h0oke 2 2,622 Último mensaje 23 Mayo 2010, 02:19 am
por h0oke
Duda con punteros (error programa)
Programación C/C++
apoeti 7 3,606 Último mensaje 12 Agosto 2012, 01:19 am
por rir3760
Duda sobre punteros
Programación C/C++
adissenys 3 2,411 Último mensaje 17 Noviembre 2012, 22:59 pm
por Ferno
Duda con Punteros en C
Programación C/C++
LeoJ24 2 1,967 Último mensaje 13 Enero 2013, 20:49 pm
por ameise_1987
Duda con Punteros - C
Programación C/C++
LeoJ24 6 3,260 Último mensaje 21 Enero 2013, 01:34 am
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines