Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 15 mensajes ] 
Patrocinadores
  •  Deb Linux  •  Su enlace aquí...

Autor
Buscar:
Mensaje

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Mar Nov 21, 2006 8:00 am
Mensajes: 1031
Ubicación: Mi casa, Sant marçal, marratxí, mallorca, baleares, españa, europa, el mundo, planeta solar...

Nota Publicado: Mar May 11, 2010 9:49 pm 
Arriba  
veamos...
como podria hacer algo asi
printf("hola" + " esto es una prueba");

y obtener de salida
"hola esto es una prueba"

sin usar variables xDDD una concatenacion directa..busco i no encuentro

_________________
linux user #439128
DebianSqueeze
http://www.acarrasco.es

Proyecto:
http://alejandria.host56.com

Código:
No sé juntar "informática" y "legal" en una misma palabra....
yo sí: LINUX

 Perfil WWW  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Lun Mar 29, 2010 4:45 pm
Mensajes: 73

Nota Publicado: Mar May 11, 2010 11:15 pm 
Arriba  
Pues...
Código:
printf("%s %s","hola","esto es una prueba");


Igual es absurdo y no es eso lo que buscas, porque para eso pones printf("Texto"); y es lo mismo pero... no se muy bien que es lo que quieres.. :? :D

 Perfil  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Mar Nov 21, 2006 8:00 am
Mensajes: 1031
Ubicación: Mi casa, Sant marçal, marratxí, mallorca, baleares, españa, europa, el mundo, planeta solar...

Nota Publicado: Mar May 11, 2010 11:26 pm 
Arriba  
retranca escribió:
Pues...
Código:
printf("%s %s","hola","esto es una prueba");


Igual es absurdo y no es eso lo que buscas, porque para eso pones printf("Texto"); y es lo mismo pero... no se muy bien que es lo que quieres.. :? :D

el problema esque quiero concatenar variables de texto y de integer (convertidas en texto) en la funcion write que esribe en un fichero
write(fichero,&var,siceof(char));
y en var poner la concatenacion del texto.....

se que con el printf esta esa opcion....pero con el write no....

_________________
linux user #439128
DebianSqueeze
http://www.acarrasco.es

Proyecto:
http://alejandria.host56.com

Código:
No sé juntar "informática" y "legal" en una misma palabra....
yo sí: LINUX

 Perfil WWW  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Lun Mar 29, 2010 4:45 pm
Mensajes: 73

Nota Publicado: Mar May 11, 2010 11:33 pm 
Arriba  
Ah, ok. Pues ahí si que no te puedo ayudar, si no es utilizando una variable.. :unknown:

 Perfil  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Mar Nov 21, 2006 8:00 am
Mensajes: 1031
Ubicación: Mi casa, Sant marçal, marratxí, mallorca, baleares, españa, europa, el mundo, planeta solar...

Nota Publicado: Mar May 11, 2010 11:38 pm 
Arriba  
retranca escribió:
Ah, ok. Pues ahí si que no te puedo ayudar, si no es utilizando una variable.. :unknown:

una variable como¿?
char var[]= "texto 1" (car(variable_int)

pero como? xD

_________________
linux user #439128
DebianSqueeze
http://www.acarrasco.es

Proyecto:
http://alejandria.host56.com

Código:
No sé juntar "informática" y "legal" en una misma palabra....
yo sí: LINUX

 Perfil WWW  

Desconectado
Forista Legendario
Forista Legendario
Avatar de Usuario

Registrado: Vie Abr 27, 2007 7:00 am
Mensajes: 1789

Nota Publicado: Mié May 12, 2010 6:57 am 
Arriba  
vampir escribió:
retranca escribió:
Pues...
Código:
printf("%s %s","hola","esto es una prueba");


Igual es absurdo y no es eso lo que buscas, porque para eso pones printf("Texto"); y es lo mismo pero... no se muy bien que es lo que quieres.. :? :D

el problema esque quiero concatenar variables de texto y de integer (convertidas en texto) en la funcion write que esribe en un fichero
write(fichero,&var,siceof(char));
y en var poner la concatenacion del texto.....

se que con el printf esta esa opcion....pero con el write no....


Código:
#define CONCAT_LEN 512

char *concat_str;

concat_str = (char *)malloc(CONCAT_LEN);
sprintf(concat_str, "%s: %i, %s: %i, %s: %i", "uno", 1, "dos", 2, "tres", 3);
fwrite(concat_str, CONCAT_LEN, 1, fptr);


http://www.cplusplus.com/reference/clib ... o/sprintf/

_________________
Desarrollo en Qt: Codigo::Qt() | Qt Developer Network
Mis proyectos: github | SourceForge.net

 Perfil WWW  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Lun Mar 29, 2010 4:45 pm
Mensajes: 73

Nota Publicado: Mié May 12, 2010 11:17 am 
Arriba  
En eso estaba pensando, más o menos... Y digo más o menos porque la linea
Código:
concat_str = (char *)malloc(CONCAT_LEN);
no la entiendo. Supongo que será lo mismo que poner
Código:
char concat_str[CONCAT_LEN];
:)

 Perfil  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Lun May 10, 2010 1:00 am
Mensajes: 53
Ubicación: Andalucía

Nota Publicado: Mié May 12, 2010 11:59 am 
Arriba  
¿Y algo así?

Código:
#define LONGITUD 512

char cad[LONGITUD];
char *variable1 = "hola, ",
char *variable2 = "esto es una prueba";

strncpy(cad, variable1, LONGITUD - 1);
strncat(cad, variable2, LONGITUD - strlen(cad) - 1);
cad[LONGITUD - 1] = '\0';


Manipulando cadenas en C hay que tener mucho cuidado con el famoso desbordamiento de buffer.

Claro que en lugar de utilizar un tamaño de buffer preasignado podemos asignarlo dinámicamente con malloc, ralloc, y demás.

Saludos.


Última edición por shicefgo el Mié May 12, 2010 12:09 pm, editado 3 veces en total
 Perfil  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Lun Mar 29, 2010 4:45 pm
Mensajes: 73

Nota Publicado: Mié May 12, 2010 12:05 pm 
Arriba  
vampir escribió:
sin usar variables xDDD una concatenacion directa..


Pero gracias, ahora ya sé qué significa la linea esa con 'malloc'. :D

 Perfil  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Lun May 10, 2010 1:00 am
Mensajes: 53
Ubicación: Andalucía

Nota Publicado: Mié May 12, 2010 12:11 pm 
Arriba  
Lo he editado un poco, esto algo desentrenado en C.
Pues concatena directamente... en lugar de variable1 pon "Hola, " y andando... (digo yo).

 Perfil  

Desconectado
Forista Legendario
Forista Legendario
Avatar de Usuario

Registrado: Vie Abr 27, 2007 7:00 am
Mensajes: 1789

Nota Publicado: Mié May 12, 2010 4:53 pm 
Arriba  
shicefgo escribió:
Manipulando cadenas en C hay que tener mucho cuidado con el famoso desbordamiento de buffer.


Bueno si ovbio, lo logico seria calcular el largo de la cadena generada + 1 y reservar esa cantidad de memoria, y al ultimo caracter(el que sobra) ponerlo a 0, para que lo tome como el final de la cadena.
Eran como las 2 de la mañana cuando escribi el ejemplo, no me iva a poner a escribir todas las posibilidades ¬¬
Tambien existe la posibilidad de hacer "Hola, " + "que tal?" y obtener "Hola, que tal?" pero solo en C++ y requiere saber sobrecarga de operadores.

_________________
Desarrollo en Qt: Codigo::Qt() | Qt Developer Network
Mis proyectos: github | SourceForge.net

 Perfil WWW  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Mar Nov 21, 2006 8:00 am
Mensajes: 1031
Ubicación: Mi casa, Sant marçal, marratxí, mallorca, baleares, españa, europa, el mundo, planeta solar...

Nota Publicado: Mié May 12, 2010 8:14 pm 
Arriba  
muchas gracias, he usado la solucion que me disteis, pero en vez de malloc un array....a mi me parece mas limpio

y respecto al ultimo comentario..."hola" + " que tal?" no puedo, debe ser porque es de C++ y yo tengo que usar C (trabajo de clase)

_________________
linux user #439128
DebianSqueeze
http://www.acarrasco.es

Proyecto:
http://alejandria.host56.com

Código:
No sé juntar "informática" y "legal" en una misma palabra....
yo sí: LINUX

 Perfil WWW  

Desconectado
Forista Legendario
Forista Legendario
Avatar de Usuario

Registrado: Vie Abr 27, 2007 7:00 am
Mensajes: 1789

Nota Publicado: Mié May 12, 2010 10:19 pm 
Arriba  
vampir escribió:
muchas gracias, he usado la solucion que me disteis, pero en vez de malloc un array....a mi me parece mas limpio


Todo lo contrario es mucho mas limpio usar memoria dinamica, tu no sabes que largo tendra la cadena, si es mas corta que la memoria que reservaste entonces estas desperdiciando memoria, si es mas larga entonces se produce buffer overflow.
Ademas si ya te enseñaron a usar memoria dinamica entonces te conviene usarla, si yo fuera profesor te bajaria unos cuantos puntos por no usarla :twisted:

_________________
Desarrollo en Qt: Codigo::Qt() | Qt Developer Network
Mis proyectos: github | SourceForge.net

 Perfil WWW  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Mar Nov 21, 2006 8:00 am
Mensajes: 1031
Ubicación: Mi casa, Sant marçal, marratxí, mallorca, baleares, españa, europa, el mundo, planeta solar...

Nota Publicado: Jue May 13, 2010 10:07 am 
Arriba  
hipersayan_x escribió:
vampir escribió:
muchas gracias, he usado la solucion que me disteis, pero en vez de malloc un array....a mi me parece mas limpio


Todo lo contrario es mucho mas limpio usar memoria dinamica, tu no sabes que largo tendra la cadena, si es mas corta que la memoria que reservaste entonces estas desperdiciando memoria, si es mas larga entonces se produce buffer overflow.
Ademas si ya te enseñaron a usar memoria dinamica entonces te conviene usarla, si yo fuera profesor te bajaria unos cuantos puntos por no usarla :twisted:

pero yo no se cuanta memoria necesitare hasta despues de "rellenar el vector", como se entoces cuanta necesito

no esque me hallan enseñado a usar, me dijeron que era (por encima) que se podia usar como un vector, y que luego se tenia k liberar, punto xD

_________________
linux user #439128
DebianSqueeze
http://www.acarrasco.es

Proyecto:
http://alejandria.host56.com

Código:
No sé juntar "informática" y "legal" en una misma palabra....
yo sí: LINUX

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1421
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Jue May 13, 2010 3:56 pm 
Arriba  
Para ir añadiendo elementos "dinámicamente" lo que se suele hacer es una especie de wrapper para un array, añadiendo la funcionalidad que se quiera. Si has usado php, o algún lenguaje orientado a objetos, te habrás dado cuenta de que las clases array y/o string o similares tienen una función add(elemento), que te añade el elemento al final, independientemente de que haya o no sitio (si no lo hay se crea).

Una forma de hacerlo es utilizar un array de un determinado tamaño. Supongamos que el array está inicializado con todos sus valores a 0 y tiene un tamaño de 100 elementos. El método add lo que va a hacer es ir añadiendo al final del array (suponiendo que el valor 0 indique que no hay más elementos), con ayuda de un índice que irá aumentado.
Código:
void add (Element e){
   vector[indice] = e;
   indice++;
}

Cuando el índice sea superior al tamaño del array, lo que vas a hacer es duplicar el tamaño del array, creando uno nuevo y copiando todos los elementos del viejo array al nuevo.
Código:
void add (Element e){
   if (indice >= tamaño_max){
      arr2 = crear_array(tamaño_max * 2);   //duplicamos el tamaño máximo
      copiar_array(arr1,arr2);
      tamaño_max *= 2;
   }
   vector[indice] = e;    //sería arr2 despúes de copiar el array
   indice++;
}


La razón de duplicar el tamaño del array es porque suele salir más rentable en cuanto a tiempo, a la hora de añadir elementos.

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 15 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
java y comparacion de cadenas(Strings)...

en Programación

diego_ares

2

1732

Vie Abr 01, 2005 3:48 am

kroactor Ver último mensaje

ascii a utf-8 Unicode strings - python

en Software

williamromero

2

142

Jue Nov 10, 2011 6:55 pm

williamromero Ver último mensaje

Unir lineas (concatenar lineas diferentes ficheros)

en Programación

guanana

4

1892

Mié Jun 09, 2010 8:40 pm

guanana Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO