ayuda con ejercicio sencillo

Iniciado por Fer995, 30 Octubre 2010, 02:28 AM

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

Fer995

he hecho un ejercicio que lee una frase y luego te pide un caracter que comprueba en que posiciones de la frase esta (si esta en la frase). luego te pregunta si quieres buscar otro caracter diferente..

tengo un problema, y es que cuando el usuario escribe mas de un caracter por error, los distintos scanf leen caracter por caracter todos los que se introdujeron (ni siquiera poniendo \n lo solucione)
la unica solucion que se me ocurrre usando scanf es usar fflush.. pero no me dejan usar esa funcion.

que cosas cambiariais para que funcionase mejor o que le quiariais / añadiriais???

gracias!



#include <stdio.h>
#include <stdlib.h>
#define MAX_LONG 100

void main()
{

char c[MAX_LONG], cb, c2[MAX_LONG], cond, encont; int i;

printf("Introduce una frase:\n\n");
fgets(c,99,stdin);

do
{

cond = 'N';
printf("\nIntroduce caracter a buscar: ");
scanf("\n%c",&cb);

for(i=0, encont = 'N';(i<MAX_LONG) && (c[i] !='\0');i++)
{
if (c[i] == cb) {c2[i] = 'V'; encont = 'S';}
else {c2[i] = 'F';}
}

if (encont == 'S')
printf("Se ha encontrado el caracter buscado (%c) en las posiciones de la cadena: ", cb);
else
printf("No se ha encontrado el caracter buscado (%c)", cb);

for(i=0;(i<MAX_LONG) && (c[i] != '\0');i++) {if (c2[i] == 'V') printf("%d, ", i);}


printf("\n\nDesea buscar otro caracter??(Contesta S o N): ");
scanf("\n%c", &cond);

}while((cond == 'S')||(cond == 's'));



printf("\n");
system("pause");
}


Darioxhcx

master
yo estoy al pedo y lo hice asi
#include <stdio.h>
#include <string.h>
main () {
     char frase[100],ca[2],opcion[1];
     int w,x,y,z=0;
     printf("escribi tu frase: ");
     gets(frase);
     volver:
     printf("\ncaracter a buscar: ");
     gets(ca);
     w=strlen(ca)-1;
                     if (w>=1) {
                     printf("se excedio el numero de caracteres a buscar...");
                     goto volver;
                                 }
     y=strlen(frase)-1;
     for (x=0;x<=y;x++){
         if (frase[x]==ca[0]){
                              printf("\nel caracter fue encontrado en la posicion %d\n",x+1);
                              z++;
                             }
         }
         if (z == 0) { printf("\nel caracter no fue encontrado\n"); }
         printf("\n\ndesea buscar otro caracter S/N: ");
         gets(opcion);
         if((opcion[0]=='s') || (opcion[0]=='S')) goto volver;
         printf("\npresione una tecla para salir ");
         getchar();
         }

no uso funciones , por que no se :P es que solo ley muy poco xD
y uso goto , capas te sirve para darte una idea
saludos

Fer995

gracias por tu ayuda!

no se me ocurrio usar strlen para ver la longitud!! muchas gracias!