[C] Problema con caracteres y cadenas

Iniciado por n-utz, 21 Mayo 2016, 03:41 AM

0 Miembros y 1 Visitante están viendo este tema.

n-utz

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.

engel lex

switch funciona con char, pero no con char* (tampoco con char[1])

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

n-utz

Cita de: engel lex en 21 Mayo 2016, 03:58 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.

engel lex

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?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

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.

n-utz

Cita de: 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?

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

Cita de: 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.

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.

engel lex

for... i del 0 al 9:
b = entrada de texto
a[i] = b


no es necesario puntero solo es recorrer el array
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

n-utz

Cita de: engel lex en 21 Mayo 2016, 04:57 AM
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).

#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.

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

n-utz

Cita de: 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

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.