Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Contar caracteres en una cadena

Estas en el tema de Contar caracteres en una cadena en el foro de C/C++ en Foros del Web. Hola, soy nuevo en esto de C, y estaba urgeteando en lo que se puede hacer y llege a un problema: Quisiera que mi programilla ...
  #1 (permalink)  
Antiguo 18/07/2010, 01:51
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Contar caracteres en una cadena

Hola, soy nuevo en esto de C, y estaba urgeteando en lo que se puede hacer y llege a un problema:

Quisiera que mi programilla contara todos los caracteres dentro de una cadena, pero solo cuenta hasta el primer espacio...

hay algo mal en el?

Código:
#include <stdio.h>
#include <string.h>
main(){
int longi;
char frase[200];
printf("Ingrese su frase: ");
scanf ("%s", &frase);

longi = strlen(frase); 
printf ("La frase tiene %d caracteres", longi);
system("pause");
}
  #2 (permalink)  
Antiguo 18/07/2010, 01:56
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Contar caracteres en una cadena

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. main(){
  4. int longi;
  5. char frase[200];
  6. printf("Ingrese su frase: ");
  7. scanf ("%s", frase);
  8.  
  9. longi = strlen(frase);
  10. printf ("La frase tiene %d caracteres", longi);
  11. system("pause");
  12. }
  #3 (permalink)  
Antiguo 18/07/2010, 09:34
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 13 años, 11 meses
Puntos: 228
Respuesta: Contar caracteres en una cadena

Tu problema recidia en que cuando definis asi una variable: char frase[20]; asi como esta es un puntero. Entonces cuando el scanf te pide la direccion de la variable directamente tenes que pasar la variable frase sin ningun operador (&).

Ahora por ejemplo para veas la diferencias, frase[6] es la desreferencia de la variable frase en la posicion 6. Por lo que ahora si es un char y no un puntero. Por lo que si vos quisieras hacer un scanf a un simple caracter deberias hacer:
scanf ("%c", &(frase[6])); en este caso si debes usar el operador &.

Esto tambien podrias ser asi: scanf ("%c", (frase + 6));

Espero que hayas entendido un poco de que se trata esto de los punteros.

Etiquetas: caracteres, contar, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:54.