[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