Autor
|
Tema: |Lo que no hay que hacer en C/C++. Nivel basico| (Leído 164,819 veces)
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
El tercer parametro de fgets es el stream desde donde vas a leer los datos. Podria ser por ejemplo un archivo de texto. Algo asi: FILE *ptr; char buff[50]; ptr =fopen("archivo.txt","rt"); if(ptr!=NULL) fgets(buff ,10,ptr );/*Aqui leemos desde un archivo de texto*/
Ahora, al usar stdin, los datos provienen del teclado (Standard Input). char buff[50]; fgets(buff ,10,stdin ); /*Aqui se lee lo que el usuario escribe en su teclado*/
http://en.wikipedia.org/wiki/Standard_streamsUn saludo
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
Aberroncho
|
Estoy de acuerdo en todo lo dicho excepto en la parte de "string.h" Microsoft tiene una lista de funciones baneadas (lo que en Visual Studio se conoce como deprecated) y obviamente tiene el reemplazo de estas llamandolas funcion_s. Ejemplo: strcpy_s, strcat_s, gets_s y etc. Pueden ver las funciones catalogadas como inseguras en este header, y su reemplazo en esta lista. (Gracias Vertex por los links ) Tambien existen opciones como strlcpy y strlcat, las cuales pueden ver a fondo en este link. Las funciones strcpy(), strcat(), strncpy() y strncat() pertenecen al estándar ANSI, lo que significa que están en las librerías estándar de todos los compiladores de C y funcionan igual en todas partes. Las funciones que propones para reemplazarlas no son estándar. Las que ha implementado Microsoft es fácil que solo las encuentres en sus compiladores, y por lo que puedo leer en el enlace que has puesto, las strlcpy y strlcat no están en las librerías GNU C. Además, suponiendo que las tengas implementadas en diferentes librerías de compiladores, al no estar estandarizadas, no tienen porqué estar implementadas de la misma forma en las diferentes librerías de los diferentes compiladores por lo que su funcionalidad podría cambiarte ligeramente de un compilador a otro. Los mayores problemas de strcpy(), strcat(), strncpy() y strncat() se dan por un mal uso de dichas funciones, osea, por errores de programación. Considero que es mejor aprender a utilizarlas adecuadamente y tener cuidado en su manejo que sustituirlas por funciones no estándar.
|
|
|
En línea
|
"La ignorancia es la noche de la mente, pero una noche sin Luna ni estrellas." (Confucio)
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Si obviamente, tenes razón. Por eso en el párrafo anterior expuse que strnxxx se pueden utilizar perfectamente mientras se tomen en cuenta las contras que estas tienen. El resto son solo mas opciones.
Un saludo!
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
RockAqp
Desconectado
Mensajes: 30
|
una pregunta no se muxo de c++ pero si no pones el system pause en un bucle x ejemplo menu se borra y no sale la respuesta y tu tambien pusiste que no se deve usar el getch tons que uso para que no se borre el resultado... :S
|
|
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
cin.get(); en C++, puedes hacer un ignore antes para ignorar lo que te haya quedado en el buffer. getchar en C, o puedes hacer un fgets para evitar el buffer sobrante. Podrás encontrar muchas formas para hacer una pausa, si se recomienda no utilizar getch es porque proviene de una librería no estándar. En el foro tienes muchos ejemplos y muchos hilos respecto al tema.
Saludos!
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
LeGNa29A
Desconectado
Mensajes: 86
|
Considero que con textos como este y (junto con las opiniones que se han dado) es realmente como podemos mejorar. Muy buen aporte, felicidades!
|
|
|
En línea
|
"Sólo en la medida en que nos exponemos a la aniquilación una y otra vez, encontramos aquello que nos hace verdaderamente indestructibles." (Pema Chödrön)
|
|
|
doripunk15
Desconectado
Mensajes: 2
|
Hola!!!
Oye me dejaste con la intriga del scanf() =s.
Tu que dominas mas de C que funcion es buena para poder obtener numeros??? ya que el scanf() deja basura
Saludos y me gusto mucho tu tutorial
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
Hola!!!
Oye me dejaste con la intriga del scanf() =s.
Tu que dominas mas de C que funcion es buena para poder obtener numeros??? ya que el scanf() deja basura
Saludos y me gusto mucho tu tutorial
Puedes usar lo que quieras para leer, excepto gets, la cosa es que limpies el buffer después, sería mejor que en vez de scanf uses, fgets + sscanf.
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Puedes usar lo que quieras para leer, excepto gets, la cosa es que limpies el buffer después, sería mejor que en vez de scanf uses, fgets + sscanf. Exacto, fgets y sscanf es lo ideal, no tenes que preocuparte por ningun buffer.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
doripunk15
Desconectado
Mensajes: 2
|
Ok entonces usare estas funciones y las probare con el metodo antes descrito en el "tutorial"
Gracias por la respuesta y saludos!!!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayudaa problema nivel basico
Programación C/C++
|
krowa
|
0
|
2,141
|
13 Marzo 2012, 23:48 pm
por krowa
|
|
|
Problema con la creación de tablas SQL nivel básico.
Desarrollo Web
|
nikko88
|
2
|
2,597
|
25 Junio 2012, 17:48 pm
por nikko88
|
|
|
[Nivel 1/10] CrackMe básico C #4
« 1 2 »
Ingeniería Inversa
|
cibergolen
|
12
|
9,770
|
30 Diciembre 2012, 22:42 pm
por cibergolen
|
|
|
[C] problemas de ejecucion con un for (nivel basico, 1ro de carrera) [?]
« 1 2 3 »
Programación C/C++
|
SoyelRobert
|
20
|
12,913
|
16 Diciembre 2013, 21:24 pm
por SoyelRobert
|
|
|
[Tutorial Nivel básico] Haciendo cantar a nuestro Crackme
Ingeniería Inversa
|
fary
|
5
|
4,382
|
6 Febrero 2016, 00:03 am
por fary
|
|