Autor
|
Tema: [Ayuda C]Consejos para TP Final (Leído 2,768 veces)
|
n-utz
Desconectado
Mensajes: 165
Babylon es el vampiro!
|
[PRIMERA DUDA RESUELTA POR MAFUS] Buenas, estoy ya preparando mi TP final para aprobar la asignatura, vengo en busca de unos consejos y sacarme varias dudas. El TP es con manejo de archivos y estructura, nada complicado. Lo que pasa que quiero hacerlo lo mas optimo posible y por eso acudo a ustedes.
Mi primera duda es que en el programa tengo que leer bocha de datos ingresados por teclado, y siempre en todos mis programas tengo problemas, al combinar gets y scanf, con el buffer. Que funciones me recomiendan usar para lecturas de datos?
Recuerden que tengo windows y no se si es conveniente poner un fflush(stdin) cada dos lineas.
Tengo que leer cadenas y numericos, no mas.
(Ire cambiando el post y editandolo entre tilde y cruz cada vez que tengo una pregunta, para evitar doble, triple, cuadruple post) Gracias a los interesados!
Ademas les pido a los que tengan, algun paper con apuntes de C especificamente de archivos, ya que los que tengo dejan algo que desear.
[SEGUNDA DUDA]
Modifico este post para no plaguear el sub-foro. Ahora tengo una duda con el archivo, al grabarlo lo grabo con extension .txt, y graba todo perfectamente, y si lo leo desde el IDE lo imprime perfectamente. El problema esta cuando yo voy directamente al txt creado y lo abrio, se ven todos simbolos ilegibles, como si fuera basura, y me han dicho que no tiene porque ser asi.
Mi duda es como hacer para que se no se grabe "basura" en el txt, y tambien pueda modificarlo desde alli.
Gracias.
|
|
« Última modificación: 28 Septiembre 2016, 01:50 am por n-utz »
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
No uses fflush ( stdin ). Esta función sólo está pensada para flujos de salida. Usada en flujos de entrada su comportamiento no está definido, puede pasar cualquier cosa.
No uses gets, es una función obsoleta por su inseguridad y está marcada a desaparecer.
|
|
|
En línea
|
|
|
|
n-utz
Desconectado
Mensajes: 165
Babylon es el vampiro!
|
No uses fflush ( stdin ). Esta función sólo está pensada para flujos de salida. Usada en flujos de entrada su comportamiento no está definido, puede pasar cualquier cosa.
No uses gets, es una función obsoleta por su inseguridad y está marcada a desaparecer.
Perfecto, y entonces? Me manejo con scanf nada mas? Como controlo el buffer? Combino getchar y scanf?
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Scanf tiene muchas opciones, incluso puede dimensionar el buffer por ti con el especificador m. Pásate por aquí y verás todo lo que puede hacer: https://linux.die.net/man/3/scanfY printf también tiene más opciones de las que te habrán contado. Dale un repaso también a su página de manual.
|
|
|
En línea
|
|
|
|
n-utz
Desconectado
Mensajes: 165
Babylon es el vampiro!
|
Scanf tiene muchas opciones, incluso puede dimensionar el buffer por ti con el especificador m. Pásate por aquí y verás todo lo que puede hacer: https://linux.die.net/man/3/scanfY printf también tiene más opciones de las que te habrán contado. Dale un repaso también a su página de manual. Gracias genio! Estas funciones son compatibles con windows no?
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
És la librería estándar de C. Sirve para cualquier compilador que siga el estándar.
|
|
|
En línea
|
|
|
|
n-utz
Desconectado
Mensajes: 165
Babylon es el vampiro!
|
Lo que pasa que no logro encontrar una funcion de scanf que me lea los espacios. Cual deberia utilizar o de que forma? fscanf(stdin...) no me funciona tampoco.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
scanf tiene una especie de expresión regular: si sustituyes %s por %[] scanf aceptará solamente los caracteres que haya entre corchetes, pero si el primer caracter que hay entre los corchetes es el acento circunflejo ^ scanf leerá todos los caracteres hasta encontrar los de la lista. Así %[^\n] leerá toda la cadena hasta encontrar el caracter de nueva línea.
|
|
|
En línea
|
|
|
|
n-utz
Desconectado
Mensajes: 165
Babylon es el vampiro!
|
scanf tiene una especie de expresión regular: si sustituyes %s por %[] scanf aceptará solamente los caracteres que haya entre corchetes, pero si el primer caracter que hay entre los corchetes es el acento circunflejo ^ scanf leerá todos los caracteres hasta encontrar los de la lista. Así %[^\n] leerá toda la cadena hasta encontrar el caracter de nueva línea.
perfecto, disculpa, se que esa teoria esta en la pagina que me pasaste pero no me manejo muy bien con el lexico del rubro en ingles. Gracias una vez mas.
Plantee una nueva duda aqui mismo, editando el post principal para evitar el doble post. Gracias a los interesados! MOD: No hacer doble post.
|
|
« Última modificación: 28 Septiembre 2016, 05:36 am por MCKSys Argentina »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda !!Urgente!! es para un examen de final del me que viene! Porfavor
.NET (C#, VB.NET, ASP)
|
Brian1511
|
4
|
2,783
|
17 Noviembre 2012, 01:31 am
por Brian1511
|
|
|
Ayuda con c, para final de SIntaxis !
Programación C/C++
|
mariaorlando0922
|
2
|
2,431
|
14 Febrero 2013, 21:47 pm
por durasno
|
|
|
Problemas para instalar wifislax 4.3(final), 4.4.5 y 4.5(final) en HD
Wireless en Linux
|
Sprocet39
|
0
|
3,632
|
20 Junio 2013, 17:13 pm
por Sprocet39
|
|
|
Ayuda/Consejos -> Programa para un particular
Programación General
|
slyfx
|
0
|
1,409
|
13 Noviembre 2013, 09:48 am
por slyfx
|
|
|
¿Consejos para hacer videojuego de batallas estilo Final Fantasy 6?
Programación General
|
Tachikomaia
|
0
|
3,443
|
25 Abril 2019, 23:58 pm
por Tachikomaia
|
|