Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Obtener caracter

Estas en el tema de Obtener caracter en el foro de C/C++ en Foros del Web. Hola, Mi duda es de que forma puedo obtener un caracter ingresado por el usuario del programa. Este es el codigo que tengo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 12/09/2013, 14:28
Avatar de leasl  
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Obtener caracter

Hola,

Mi duda es de que forma puedo obtener un caracter ingresado por el usuario del programa.

Este es el codigo que tengo:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #define BUFFSIZE 30
  5.  
  6. /* 129. Crear una función que recibe como parámetro un string y un carácter y devuelve la posición donde aparece ese carácter,
  7.  o -1 en caso de no existir.*/
  8.  
  9. int PosicionCaracter(char s[],char c);
  10.  
  11. int main()
  12. {
  13.           char s[BUFFSIZE],c,buffer[BUFFSIZE];
  14.           int posicion=0;
  15.           printf("Ingresar una palabra\n");
  16.           gets(s);
  17.           printf("Ingresar un caracter\n"); /*Aca empieza el problema */
  18.           getchar(buffer);
  19.           c=buffer;
  20.           posicion = PosicionCaracter(s,c);
  21.           if (posicion != -1)
  22.           {
  23.                        printf("La posicion del caracter es: %d", posicion);
  24.           }
  25.           else
  26.                        printf("No se ha encontrado dentro de la cadena el caracter");
  27.           getch();
  28.           return 0;
  29. }
  30.  
  31. int PosicionCaracter(char s[],char c)
  32. {
  33.           int pos=-1,i;    
  34.           for(i=0; s[i]!= '\0'; i++)
  35.           {
  36.                    if (s[i] == c)
  37.                    {
  38.                    pos = i + 1;
  39.                    }            
  40.           }
  41.           return pos;
  42. }

Lo que se me ocurrio es convertir a C en una cadena de caracteres de 1 posición. Pero me gustaria saber si existe una funcion para que pueda tratar a c solo como una variable.

Saludos!
  #2 (permalink)  
Antiguo 12/09/2013, 14:40
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Obtener caracter

C ya es una variable...
  #3 (permalink)  
Antiguo 12/09/2013, 14:54
Avatar de leasl  
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Obtener caracter

Esta bien, por ahi me exprese mal.

Lo que yo quiero es ingresarle un valor y no se como hacerlo.
  #4 (permalink)  
Antiguo 12/09/2013, 15:07
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Obtener caracter

Hola.

Según leo en el enunciado (comentado en tu código), la consigna es devolver la posición de un caracter dentro de una cadena si se encuentra o -1 de otro modo.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define BUFFSIZE 30
  4.  
  5. int PosicionCaracter(char [], char );
  6.  
  7. int main()
  8. {
  9.   char s[BUFFSIZE], c;
  10.   int posicion;
  11.  
  12.   printf("Ingrese una palabra: ");
  13.   fgets(s, BUFFSIZE, stdin);
  14.   printf("\nIngrese un caracter:");
  15.   c = getchar();
  16.   while(getchar()!='\n');
  17.  
  18.   posicion = PosicionCaracter(s,c);
  19.   if (posicion == -1)
  20.     printf("El caracter no se ha encontrado dentro de la cadena ");
  21.   else
  22.     printf("Caracter encontrado en la posicion: %d", posicion);
  23.   getchar();
  24.  
  25.   return 0;
  26. }
  27.  
  28. int PosicionCaracter(char s[],char c)
  29. {
  30.   int pos=-1,i=0;
  31.   while (pos == -1 && s[i] != '\0')
  32.     if (c == s[i++]) pos = i; // i-1, para posición indice 0
  33.   return pos;
  34. }

Saludos.

Etiquetas: funcion, int, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.