Problema con cadena

Iniciado por jaxoR, 24 Marzo 2014, 22:49 PM

0 Miembros y 2 Visitantes están viendo este tema.

jaxoR

Hola, quisiera saber como almacenar todo esto:

Código (cpp) [Seleccionar]
printf("%c%d%c%d%c%d%c%d%c%d \n\n", letra[0], numero[0], letra[1], numero[1], letra[2], numero[2], letra[3], numero[3], letra[4], numero[4]);

En una sola cadena o palabra. Gracias!


dato000

supongo que usando un for no?

algo asì, no soy el experto, pero ya vendran:


int i;
string cadena = "";
for(i=0; i<5; i++)
{
    cadena += letra[i];
    cadena += (char) numero[i]; // // creo que funcionaria tambien itoa(numero[i], cadena, 2);
}

printf("%s \n\n", cadena);


bueno solo es una sugerencia.

slds



amchacon

Código (cpp) [Seleccionar]
cadena += (char) numero[i];
Eso no hace lo que esperas, pruebalo tú mismo y veras (te apareceran simbolos raros en el texto).

En C no sabría hacerlo, pero te puedo poner un ejemplo en C++:
Código (cpp) [Seleccionar]
stringstream aux;

for(i=0; i<5; i++)
{
    aux<<letra[i]<<numero[i];
}

cout<<aux.str()<<endl;
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

jaxoR

Cita de: amchacon en 25 Marzo 2014, 00:19 AM
Código (cpp) [Seleccionar]
cadena += (char) numero[i];
Eso no hace lo que esperas, pruebalo tú mismo y veras (te apareceran simbolos raros en el texto).

En C no sabría hacerlo, pero te puedo poner un ejemplo en C++:
Código (cpp) [Seleccionar]
stringstream aux;

for(i=0; i<5; i++)
{
    aux<<letra[i]<<numero[i];
}

cout<<aux.str()<<endl;


Que significarían los <<?

Es que todavía estoy con C y no pase a C++.

Y hay alguna diferencia entre stringstream aux, y string cadena = ""

rir3760

Cita de: wiD^ en 24 Marzo 2014, 22:49 PMquisiera saber como almacenar todo esto:
Código (cpp) [Seleccionar]
printf("%c%d%c%d%c%d%c%d%c%d \n\n", letra[0], numero[0], letra[1], numero[1], letra[2], numero[2],
letra[3], numero[3], letra[4], numero[4]);


En una sola cadena o palabra.
Puedes utilizar sprintf. Un ejemplo:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   char cad[11];
   char letra[] = "ABCDE";
   int numero[] = {1, 2, 3, 4, 5};
   
   sprintf(
      cad,
      "%c%d%c%d%c%d%c%d%c%d",
      letra[0], numero[0],
      letra[1], numero[1],
      letra[2], numero[2],
      letra[3], numero[3],
      letra[4], numero[4]
   );
   printf("%s\n", cad);
   
   return EXIT_SUCCESS;
}


Pero se debe cuidar que el numero de caracteres generado no sobrepase la capacidad del array, si eso es un problema una mejor alternativa es snprintf (disponible a partir del estándar C99).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language