elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Convertir cada caracter de una cadena en una cadena independiente [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Convertir cada caracter de una cadena en una cadena independiente [SOLUCIONADO]  (Leído 4,788 veces)
jazx

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Convertir cada caracter de una cadena en una cadena independiente [SOLUCIONADO]
« en: 11 Mayo 2015, 03:36 am »

Hola, soy nuevo en el foro, y he buscado por mil lugares sin tener claro como resolver esto que debe ser, segun imagino, algo muy simple:

Imaginen que tengo una cadena (char) que contiene "abcdefgh" ... y quiero que cada una de las letras, segun su posicion en la cadena queden en variables para poder compararlas.... como podria hacerse?

Ejemplo:

Código:
char micadena[9] = "abcdefgh";
const char *h = micadena;

// luego puedo llamar a cada caracter e imprimirlos sin problemas haciendo

printf("%c\n", h[0]);
printf("%c\n", h[1]);
printf("%c\n", h[2]);
printf("%c\n", h[3]);
printf("%c\n", h[4]);
printf("%c\n", h[5]);
printf("%c\n", h[6]);
printf("%c\n", h[7]);

// Pero no encuentro la forma de que el contenido de, por ejemplo, "h[0]" se guarde en otra cadena ...

He probado de mil formas pero no encuentro el modo...

Un detalle... siempre he armado scripts en bash (linux), incluso muy complejos, pero recien hace 3 dias empece con C... asi que mi conocimiento de este lenguaje es sumamente limitado.

Es un programa muy simple el que estoy haciendo... pero no logro convertir cada uno de los caracteres de una cadena independiente para poder trabajar con cada una de las letras de forma independiente.

Alguien me ayudaria por favor?


« Última modificación: 11 Mayo 2015, 14:55 pm por jazx » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Convertir cada caracter de una cadena en una cadena independiente
« Respuesta #1 en: 11 Mayo 2015, 04:55 am »

como esto:

Código
  1. void freeStringArray(char** StringArray, size_t NumberOfStrings)
  2. {
  3.    size_t i;
  4.    for (i = 0; i < NumberOfStrings; i++)
  5.    {
  6.        if (StringArray[i])
  7.        {
  8.            free(StringArray[i]);
  9.        }
  10.    }
  11.  
  12.    free(StringArray);
  13. }
  14.  
  15. int splitchars(char*** StringArray, size_t* NumberOfStrings, char* CharArray)
  16. {
  17.    size_t ArrayLen;
  18.    char** StringArrayPtr;
  19.    size_t i;
  20.  
  21.    if (!StringArray ||
  22.        !NumberOfStrings ||
  23.        !CharArray)
  24.    {
  25.        return 0;
  26.    }
  27.  
  28.    ArrayLen = strlen(CharArray);
  29.    if (!(ArrayLen > 0))
  30.    {
  31.        return 0;
  32.    }
  33.  
  34.    StringArrayPtr = malloc(sizeof(char*) * ArrayLen);
  35.    if (!StringArrayPtr)
  36.    {
  37.        return 0;
  38.    }
  39.  
  40.    memset(StringArrayPtr, 0, sizeof(char*) * ArrayLen);
  41.    for (i = 0; i < ArrayLen; i++)
  42.    {
  43.        StringArrayPtr[i] = malloc(sizeof(char) * 2);
  44.        if (!StringArrayPtr[i])
  45.        {
  46.            freeStringArray(StringArrayPtr, ArrayLen);
  47.            return 0;
  48.        }
  49.  
  50.        (StringArrayPtr[i])[0] = CharArray[i];
  51.        (StringArrayPtr[i])[1] = 0;
  52.    }
  53.  
  54.    *StringArray = StringArrayPtr;
  55.    *NumberOfStrings = ArrayLen;
  56.    return 1;
  57. }
  58.  

-

Código
  1. INT __cdecl main()
  2. {
  3.    char** strings1;
  4.    size_t nstrings1;
  5.  
  6.    char** strings2;
  7.    size_t nstrings2;
  8.  
  9.    char** strings3;
  10.    size_t nstrings3;
  11.  
  12.    size_t i;
  13.  
  14.    splitchars(&strings1, &nstrings1, "Hello world");
  15.    splitchars(&strings2, &nstrings2, "1234567890");
  16.    splitchars(&strings3, &nstrings3, "abcdefghijk");
  17.  
  18.    for (i = 0; i < nstrings1; i++)
  19.    {
  20.        printf("%s\n", strings1[i]);
  21.    }
  22.  
  23.    for (i = 0; i < nstrings2; i++)
  24.    {
  25.        printf("%s\n", strings2[i]);
  26.    }
  27.  
  28.    for (i = 0; i < nstrings3; i++)
  29.    {
  30.        printf("%s\n", strings3[i]);
  31.    }
  32.  
  33.    // free
  34.    freeStringArray(strings1, nstrings1);
  35.    freeStringArray(strings2, nstrings2);
  36.    freeStringArray(strings3, nstrings3);
  37.  
  38.    return 0;
  39. }
  40.  
  41.  


En línea

jazx

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Convertir cada caracter de una cadena en una cadena independiente
« Respuesta #2 en: 11 Mayo 2015, 13:23 pm »

Wow ....

Ante todo, gracias por contestar tan rapido...  y por cierto, es mas complejo de lo que imaginaba...

Y, perdon por la insistencia... pero no existe un modo mas directo?
Es decir... ya tengo cada caracter en h[0] h[1] h[2] h[3] ...

Ademas, cada caracter solo puede ser 0 o 1 ... es decir... en el codigo tengo:

char micadena[9] = "00101101";

Necesito que h[0], h[1], h[2] ... puedan ser escritos dentro de una variable... no se si con strcpy o alguna funcion puedo hacer algo asi...

Es muy simple... solo tengo que poder hacer luego:

Si nuevavariable = 0 >> hacer tal o cual cosa
Si nuevavariable = 1 >> hacer tal otra

No debe ser tan complicado... quiza con alguna libreria especifica...

Y si no, quiza se pueda hacer algo mas sencillo...

En realidad todo se resume a que pueda hacer esto:

Código:

   i = strcmp( h[1], "1" );
   if( i == 0 )  printf("el caracter es 1");


Pero me da error en la sintaxis de la primera linea cuando voy a compilarlo con gcc...

Si puedo escribir esa simple comparacion resuelvo todo el asunto...
« Última modificación: 11 Mayo 2015, 13:28 pm por jazx » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Convertir cada caracter de una cadena en una cadena independiente
« Respuesta #3 en: 11 Mayo 2015, 14:06 pm »


En realidad todo se resume a que pueda hacer esto:

Código:

   i = strcmp( h[1], "1" );
   if( i == 0 )  printf("el caracter es 1");


Pero me da error en la sintaxis de la primera linea cuando voy a compilarlo con gcc...

Si puedo escribir esa simple comparacion resuelvo todo el asunto...

Código
  1. if(h[1]=='1') printf("El caracter es 1");
En línea

jazx

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Convertir cada caracter de una cadena en una cadena independiente
« Respuesta #4 en: 11 Mayo 2015, 14:54 pm »

Ivancea96 ...

Te estoy amando con toda el alma... la comparacion funciona ahora a la perfeccion...

GRACIAS!!!!!!!!!!!!!!!
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Convertir cada caracter de una cadena en una cadena independiente [SOLUCIONADO]
« Respuesta #5 en: 11 Mayo 2015, 15:08 pm »

Atento a los tipos de las variables:

Código
  1. "frase" -> char*
  2. 'c' -> char
  3.  
  4. "frase"[0] -> char ( 'f' )
  5. strcmp(char*, char*);
  6.  
  7. ("f" == 'f') -> bool (false), "f" es un char* y 'f' es un char. El primero es una direccion de memoria de, generalmente, 4 bytes. El segundo es un tipo entero de 1 byte (que se representa como una letra)
  8.  
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Convertir cada caracter de una cadena en una cadena independiente [SOLUCIONADO]
« Respuesta #6 en: 12 Mayo 2015, 03:56 am »

El error de sintaxis: cambiar "INT" a "int" Y al parecer estabas intentado matar una mosca con un cañon.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recibir cadena de carácter.
.NET (C#, VB.NET, ASP)
Meta 1 2,722 Último mensaje 9 Septiembre 2008, 23:57 pm
por MANULOMM
Comparar cadena con un caracter ascii
Programación C/C++
d00ze13 2 11,747 Último mensaje 9 Marzo 2011, 10:30 am
por Akai
[Solucionado] Separar una Cadena de Texto Caracter Por Caracter « 1 2 »
Programación Visual Basic
agus0 19 22,763 Último mensaje 5 Mayo 2011, 14:29 pm
por Psyke1
[Python]Sumar valor numérico de cada carácter de una cadena(ASCII).
Scripting
S3kh 7 11,284 Último mensaje 4 Septiembre 2011, 03:57 am
por S3kh
[Solucionado] Constantes de carácter y constantes de cadena de carácteres
Programación C/C++
Caster 4 4,368 Último mensaje 20 Febrero 2012, 15:43 pm
por Caster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines