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

programacion en c

Estas en el tema de programacion en c en el foro de C/C++ en Foros del Web. hola chicos soy nueva en esto de la programacion y quisiera saber si ustedes saben como se puede inicializar una cadena en el main. a ...
  #1 (permalink)  
Antiguo 20/10/2014, 20:14
 
Fecha de Ingreso: octubre-2014
Mensajes: 1
Antigüedad: 9 años, 6 meses
Puntos: 0
Mensaje programacion en c

hola chicos soy nueva en esto de la programacion y quisiera saber si ustedes saben como se puede inicializar una cadena en el main.
a mi me dijeron que se hacia asi:
static const char digitos={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
pero al momento de compilar me tira un error :s

gracias de antemano :D
  #2 (permalink)  
Antiguo 20/10/2014, 21:10
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: programacion en c

Hola amiga.
bueno eso pasa por que hay solo estas declarando una variable de tipo carácter y para hacer la declaración de varios caracteres (cadena de caracteres) tienes que usar puntero o arrays para poder declarar varios caracteres en una sola variable seria algo así.
Código C:
Ver original
  1. static const char *digitos={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
  2. //o
  3. static const char digitos[30]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
  4.  
  5. //o simplemente
  6. char *digitos={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
  7. char digitos[30]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
cual quiera de las dos formas funciona pero si quiere recorrer la cadena y verificar te recomendó usar la segunda opción.
aquí te dejo mas información de los temas.
http://c.conclase.net/curso/?cap=010
http://c.conclase.net/curso/?cap=012
Una cosa mas ya que dices que eres nueva cuando quieras publicar código usa las etiquetas Highlight.
Espero te sea de ayuda.
Saludos.
Drewermerc

Última edición por Drewermerc; 21/10/2014 a las 08:46
  #3 (permalink)  
Antiguo 21/10/2014, 09:30
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: programacion en c

tambien puedes hacer:
char digitos[] = {"0123456789"};

Y para saber su tamaño:
int TAM = sizeof( digitos ) / sizeof(digitos[0]);

luego imprimes TAM y te va salir un 11 por pantalla, 10 mas 1 que es el caracter '\0' que indica el fin de linea.

No funciona con memoria dinámica me parece. XD
  #4 (permalink)  
Antiguo 21/10/2014, 10:13
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: programacion en c

Cita:
Iniciado por vangodp Ver Mensaje
No funciona con memoria dinámica me parece. XD
Si te fijas, verás que sizeof no requiere el uso de ningún archivo de cabecera... esto es así porque esta palabra reservada es traducida por un valor absoluto en tiempo de compilación... no de ejecución.

Otra cosa es que haya compiladores que ante estas circunstancias puedan hacer un esfuerzo y en vez de traducir por un valor absoluto acabe llamando a una función que permita calcular el tamaño de la estructura... pero desde luego no es el comportamiento estándar
  #5 (permalink)  
Antiguo 24/10/2014, 03:27
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: programacion en c

Cita:
Iniciado por vangodp Ver Mensaje
tambien puedes hacer:
char digitos[] = {"0123456789"};

Y para saber su tamaño:
int TAM = sizeof( digitos ) / sizeof(digitos[0]);
Sólo aclarar que sizeof, si no me falla la memoria, es un operador, no una función, por lo que los paréntesis están de más. No está mal pero sobran y además creo que devuelve un unsigned por lo que se podría poner:

Código C++:
Ver original
  1. char digitos [] = "0123456789" ;
  2. size_t TAM = sizeof digitos / sizeof *digitos ;

Y el array, al ser unidimensional, tiene de más las llaves que lo encierran. Tampoco está mal , pero están de más.

¡¡¡Saluditos!!!


Última edición por leosansan; 24/10/2014 a las 03:33
  #6 (permalink)  
Antiguo 24/10/2014, 07:10
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: programacion en c

Cita:
Iniciado por leosansan Ver Mensaje
Código C++:
Ver original
  1. char digitos [] = "0123456789" ;
  2. size_t TAM = sizeof digitos / sizeof *digitos ;

Y el array, al ser unidimensional, tiene de más las llaves que lo encierran. Tampoco está mal , pero están de más.

¡¡¡Saluditos!!!

interesante... voy a probarlo sin los () a ver

Etiquetas: char, programa, programacion
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 11:20.