[C con Clase] Dudas con variables...
Steven Davidson
srd4121 en njit.edu
Jue Mayo 29 17:04:03 CEST 2008
Hola Stereo,
Stereo System wrote:
> Hola a todos, estoy programando en C++, aunque soy mas de PHP..
> Aunque tienen su parecido tengo problemas para trabajar con variables
> y texto..
>
> Problema:
>
> tengo esta variable
>
> char texto = "Tu nombre es ' nombre ' "
>
> donde nombre, que esta entre ' ' ,es una variable con texto..
>
> De tal forma que el resultado, al hacer un printf, es:
>
> Tu nombre es ' Juan '
>
> Al compilarlo en Ubuntu no tengo problemas... pero la hacer un printf
> no lo sustituye...
>
> Gracias de antemano... este es mi primer Post
>
En primer lugar, tienes un error con la declaración. 'texto' debe ser un
array para poder contener una cadena de caracteres. También te falta el
punto y coma al final de la declaración. Esto sería:
char texto[128];
La función 'printf()' te sirve para mostrar directa e inmediatamente una
cadena de caracteres construida en base a un formato dado por ti, el
programador. Ahora bien, si lo que quieres es guardar esa cadena
construida, entonces puedes usar 'sprintf()' que funciona de igual
manera que 'printf()', excepto que pasas una cadena como el primer
parámetro donde guardará la cadena resultante. Por ejemplo,
char nombre[128] = "Juan";
sprintf( texto, "Tu nombre es ' %s ' ", nombre );
También puedes usar las funciones 'strcpy()' y 'strcat()' para construir
esa cadena tú mismo. Esto sería,
char texto[128];
char nombre[128] = "Juan";
...
strcpy( texto, "Tu nombre es ' " );
strcat( texto, nombre );
strcat( texto, " '" );
Sugiero consultar la referencia en nuestra página acerca de éstas y
otras funciones en <string.h> (o <cstring> si usas C++). El enlace es:
http://c.conclase.net/librerias/libreria.php?lib=string
Ten presente que C no implementa una cadena de caracteres como un tipo
fundamental. Lo único que ofrece es la posibilidad de crear una cadena
literal (y constante); por ejemplo,
char szCadena[] = "Hola Mundo";
Cualesquier otras operaciones deben ser realizadas por el programador.
Para facilitar ciertas tareas básicas, la biblioteca estándar ofrece
varias funciones para concatenar/encadenar, copiar/asignar, comparar, y
buscar uno o varios caracteres.
En C++, se añade la biblioteca <string> la cual define la clase
'string'. Esta clase representa una cadena de caracteres de una forma
dinámica, para que nosotros, los programadores, no tengamos que estar
pendiente de las limitaciones del lenguaje. También definen algunos
operadores para un uso fácil y ameno. Por ejemplo,
string texto;
string nombre = "Juan";
texto = string("Tu nombre es ' ") + nombre + " '";
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase