Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: n-utz en 21 Mayo 2016, 03:41 am



Título: [C] Problema con caracteres y cadenas
Publicado por: n-utz en 21 Mayo 2016, 03:41 am
Buenas noches, verán, necesito que me ayuden:

Mi idea es tomar un caracter que lo entra el usuario por teclado y caracter a caracter ir completando una cadena (de maximo de 10 caracteres), y luego mostrar la cadena por pantalla, así formando la palabra completa.

Quería usar la función strcat, pero por lo que vi no funciona agregandole de a un caracter (es decir agregarle con una variable char(no cadena)), sino que solamente funciona con cadenas. Entonces pensé en que la solución estaría en simplemente hacer una cadena con un solo caracter es decir (char c[1];), pero en ese caso debería poder hacer un switch con esa variable, y por lo que tengo entendido el switch no funciona con cadena.

¿Alguna idea?

PD: El switch es necesario por otra parte del programa.


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: engel lex en 21 Mayo 2016, 03:58 am
switch funciona con char, pero no con char* (tampoco con char[1])



Título: Re: [C] Problema con caracteres y cadenas
Publicado por: n-utz en 21 Mayo 2016, 04:02 am
switch funciona con char, pero no con char* (tampoco con char[1])



Es lo que digo en el mensaje... lo que busco es una solucion al problema que plantee.


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: engel lex en 21 Mayo 2016, 04:12 am
no es necesairo que lo hagas con strcat, solo genera un char[10] que necesites, el input ingresalo en un chat y ese resultado vas agregandolo en la posición, no sirve eso?


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: tincopasan en 21 Mayo 2016, 04:37 am
la verdad como siempre, no entendí bien tu problema, pero asumo que quieres usar si o si switch con cada caracter, bueno, ya que no trabaja con caracteres pero si con enteros crea una variable auxiliar por ejemplo contador y asignale la cantidad de caracteres, ahora usa esa variable en switch.


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: n-utz en 21 Mayo 2016, 04:50 am
no es necesairo que lo hagas con strcat, solo genera un char[10] que necesites, el input ingresalo en un chat y ese resultado vas agregandolo en la posición, no sirve eso?

Supongo que si, pero no me leí todavía punteros y no recuerdo muy bien como usarlos. Alguna otra idea?

la verdad como siempre, no entendí bien tu problema, pero asumo que quieres usar si o si switch con cada caracter, bueno, ya que no trabaja con caracteres pero si con enteros crea una variable auxiliar por ejemplo contador y asignale la cantidad de caracteres, ahora usa esa variable en switch.

En pocas palabras es eso, quiero usar un switch con caracteres, que si se puede, lo que no se puede es usar con cadena de caracteres. Pero despues de usar el caracter en el switch quiero agregarlo a una cadena de por ejemplo 10 lugares, (char palabra[10]; por ejemplo.) Lo del switch esta resuelto, porque si puedo comparar caracteres, lo que no se es como agregar despues ese caracter a una cadena.


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: engel lex en 21 Mayo 2016, 04:57 am
Código:
for... i del 0 al 9:
b = entrada de texto
a[i] = b

no es necesario puntero solo es recorrer el array


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: n-utz en 23 Mayo 2016, 00:13 am
Código:
for... i del 0 al 9:
b = entrada de texto
a[i] = b

no es necesario puntero solo es recorrer el array

No me funciona, te adjunto el codigo a ver si me encontras un error. (El que adjunto es un codigo de prueba que tengo).

Código:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char c, palabra[1];
    fflush(stdin);
    scanf("%c", &c);
    palabra[0]=c;

    printf("%s", palabra);

    return 0;
}

No me imprime el caracter.


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: engel lex en 23 Mayo 2016, 00:16 am
que es lo que no funciona allí? que es lo que muestra y que es lo que esperas que muestre?

copia y pega aquí la pantalla de consola de esa ejecución


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: n-utz en 23 Mayo 2016, 00:33 am
que es lo que no funciona allí? que es lo que muestra y que es lo que esperas que muestre?

copia y pega aquí la pantalla de consola de esa ejecución

Simple, ingreso un caracter por teclado que se lo asigno a la variable 'c'.

Y ese caracter lo quiero igualar al lugar
  • de la variable char palabra[1].

Por lo tanto, si ingreso la letra 'p' cuando lee el caracter, quiero que me muestre la letra 'p' en pantalla.

Repito este es un proyecto prueba que abri para mostrarles lo que quiero.

En la pantalla al correr este propgrama muestra basura, si ingreso 'a' me muestra 'aaJ', si ingreso 's', me muestra 'ssJ'. No se que es lo que sucede.


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: engel lex en 23 Mayo 2016, 00:51 am
hmm claro! lo siento! jeje

las string siempre deben terminar en \0 que es el caracter de terminación de string, los metodos automáticos (como cin) normalmente lo agregan, pero si lo haces a mano, debes agregarlo tu (por eso los string siempre deben tener 1 más de largo adicional)

Código
  1. int main()
  2. {
  3.    char c, palabra[2];
  4.    fflush(stdin);
  5.    scanf("%c", &c);
  6.    palabra[0]=c;
  7.    palabra[1]='\0';
  8.  
  9.    printf("%s", palabra);
  10.  
  11.    return 0;
  12. }


Título: Re: [C] Problema con caracteres y cadenas
Publicado por: n-utz en 23 Mayo 2016, 00:53 am
Perfecto, muchisimas gracias, o solucione cargandole el caracter a mano, sin pasarselo desde la variable, pero es bueno saber esto, ya lo estoy probando.

EDIT: Anda perfecto, gracias por ayudarme engel, saludos!