Ejercicio 3 Practico 0

Ejercicio 3 Practico 0

de Juan Andrés Morena Echegaray -
Número de respuestas: 7

Buenas noches, tenia una consulta acerca del ejercicio de ocurrencias, estoy teniendo un problema al hacer la función de ocurrencia, al parecer no detecta la primera letra de la frase.



Otro problema es el tema del 'printf("%s", phrase), por lo que leí imprime la cadena de caracteres. pero al parecer no lo hace tampoco debería de estar arriba del '21 (Que es el numero de caracteres contando la H lo cual me resulta raro por que después no la encuentra).' probando me fije que phrase[0] al parecer no tiene nada.

En respuesta a Juan Andrés Morena Echegaray

Re: Ejercicio 3 Practico 0

de Gaston Notte -

Hola Juan, en vez de leer la letra con %s (string) debes hacerlo con %c (char).

Esto puede estar generando problemas en memoria, sobreescribiendo phrase.

Para que tus pruebas interactivas funcionen, intenta leyendo el char dejando un espacio en blanco antes del especificador, " %c", para que se consuma el ENTER: scanf(" %c", &searchLetter);


Probé tu código con esa modificación y funciona perfectamente.


Saludos

En respuesta a Gaston Notte

Re: Ejercicio 3 Practico 0

de Mauricio Javier Ramos De Rosa -
estoy con este ejercicio y me estaba volviendo loco leyendo el array de chars...pero %[^\n] te salva la vida ¿se puede usar tranqui?
En respuesta a Juan Andrés Morena Echegaray

Re: Ejercicio 3 Practico 0

de Joaquín Sande González -
No entiendo cómo funciona el %[^\n] ni de dónde sale (no lo encontré en el documento de Introducción al Lenguaje C). ¿Alguien sabe dónde puedo encontrarlo?

Gracias.
En respuesta a Joaquín Sande González

Re: Ejercicio 3 Practico 0

de Fernando Fernandez -
Hola Joaquín.


Va un intento de explicación de las dos preguntas, esta y la de consumir el enter.

El objetivo de ese especificador de formato es permitir leer espacios en blanco como parte del string. Si solo se pone %s la lectura se detiene al encontrar un espacio en blanco. El \n es el carácter de nueva línea y el prefijo ^ quiere decir "cualquier carácter excepto el o los que siguen". Entonces con %[^\n] se lee todo, incluido espacios en blanco hasta encontrar el nueva línea.

El carácter que representa la nueva línea no es leído, no se consume, no se asigna al arreglo en que se está almacenando lo leído. Por lo tanto queda disponible para la próxima lectura. En una sesión interactiva el nueva línea es producido al pulsar la tecla Enter. Si la próxima lectura es "%c" lo que se va a leer y almacenar es el '\n' en lugar del carácter que se desaba leer. Por eso se usa " %c", con un espacio en blanco antes de %c; ese espacio en blanco se empareja con el '\n' pendiente y de esa manera se consume, se usa.

Si no quedó claro, si querés volvé a preguntar, pero hay que tener en cuenta que estos no son temas relevantes para el curso y casi no se le va a dar ningún uso.