Autor
|
Tema: Pregunta sobre sscanf(); ??? (RESUELTO) (Leído 3,726 veces)
|
ralymontes
Desconectado
Mensajes: 47
|
#include <stdio.h> #include <stdlib.h> #include <string.h> #include<ctype.h> char id; int n,i;
int main() { char cadena[100]; printf("Inserta n:\n"); scanf("%d",&n); for(i=0;i<n;i++) { sscanf("Inserta identificador (e, v, l, c):\n","%c",&id); sscanf("Inserta cadena a tratar:\n","%s",cadena); } return 0; } Por que cuando el programa se ejecuta paraciera que no entra al for, es decir, se sale completamente. :/ Tambien intente poner dentro del ciclo el clásico printf() y el scanf(), pero tengo muchos problemas con los buffer ( tambien se salta las lineas) y fflush(stdin) no me dio buenos resultados. Cómo soluciono esto? Gracias y Saludos, Raly.
|
|
« Última modificación: 13 Noviembre 2011, 18:43 pm por ralymontes »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Los problemas aquí son dos: estas utilizando sscanf, ella lo que hace es procesar la cadena pasada como primer argumento y por supuesto no se va a imprimir en la salida estándar. El segundo se debe al uso de "%c" ya que al utilizar ese especificador la función no ignora (como en otros casos) el espacio blanco, en su lugar se "traga" el primer carácter que encuentre y este es usualmente un avance de linea. Por ultimo no deberías utilizar "fflush(stdin)", el porque se explica en el tema |Lo que no hay que hacer en C/C++. Nivel básico|. Para que funcione correctamente debes cambiarlo a: #include <stdio.h> #include <stdlib.h> int main(void) { char palabra[100]; char id; int n; int i; if (scanf("%d", &n ) != 1 || n < 0) return EXIT_FAILURE; for (i = 0; i < n; i++){ printf("Inserta identificador (e, v, l, c): "); printf("Inserta PALABRA a tratar: "); printf("Palabra: %s\n\n", palabra ); } return EXIT_SUCCESS; }
El espacio en " %c" es critico para descartar el espacio blanco antes del carácter. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
ralymontes
Desconectado
Mensajes: 47
|
Hola:
Muchas gracias por responder, pero tengo un problema y que quiza no lo dije antes, sucede que "palabra" es una cadena con espacios, es ahí donde tambien falla lo que has puesto, no sé exactamente que pasa, pero cuando meto una cadena con espacios de nuevo se salta lineas. :/
Me han dicho que una solucion es obtener caracter por caracter de la entrada estandar.
Saludos y mil gracias!
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola #include <stdio.h> #include <stdlib.h> int main(void) { char palabra[100]; char id; int n; int i; if (scanf("%d", &n ) != 1 || n < 0) return EXIT_FAILURE; for (i = 0; i < n; i++) { printf("Inserta identificador (e, v, l, c): "); printf("Inserta PALABRA a tratar: "); fgets(palabra , 99, stdin ); printf("Palabra: %s\n\n", palabra ); } return EXIT_SUCCESS; }
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
ralymontes
Desconectado
Mensajes: 47
|
Ahmmm Muchas gracias, esto me estaba comiendo mucho tiempo, pues estoy tratando de hacer un analizador sintactico... pero no podia con esto.
Gracias, Saludos, Raly.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
{Resuelto} [vbs] Pregunta sobre inputbox..
Scripting
|
xassiz_
|
4
|
3,663
|
16 Septiembre 2009, 17:46 pm
por xassiz_
|
|
|
[resuelto]pregunta , informacion del compilador dentro del ejecutable
Programación C/C++
|
daryo
|
5
|
3,277
|
14 Marzo 2013, 20:13 pm
por daryo
|
|
|
Duda sobre sscanf y strtok
Programación C/C++
|
antolinalvaro
|
1
|
1,526
|
1 Agosto 2018, 15:11 pm
por MAFUS
|
|
|
[Resuelto] [Pregunta]: Crear un timestamp 0000-00-00 00:00:00
PHP
|
Leguim
|
3
|
2,058
|
19 Septiembre 2019, 01:05 am
por MinusFour
|
|
|
[Resuelto] [Pregunta]: Deprecated Non-static method users
PHP
|
Leguim
|
4
|
2,887
|
13 Febrero 2020, 02:07 am
por Leguim
|
|