elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Página de elhacker.net en Google+ Google+


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  |Lo que no hay que hacer en C/C++. Nivel basico|
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 5 6 7 Ir Abajo Respuesta Imprimir
Autor Tema: |Lo que no hay que hacer en C/C++. Nivel basico|  (Leído 92,766 veces)
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #10 en: 22 Enero 2010, 02:49 »

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:

Código
  1. FILE *ptr;
  2. char buff[50];
  3.  
  4. ptr=fopen("archivo.txt","rt");
  5.  
  6. if(ptr!=NULL)
  7. fgets(buff,10,ptr);/*Aqui leemos desde un archivo de texto*/
  8. puts(buff);

Ahora, al usar stdin, los datos provienen del teclado (Standard Input).

Código
  1. char buff[50];
  2. fgets(buff,10,stdin); /*Aqui se lee lo que el usuario escribe en su teclado*/
  3. puts(buff);


http://en.wikipedia.org/wiki/Standard_streams

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.
Aberroncho
Colaborador
***
Desconectado Desconectado

Mensajes: 1.736


Daría todo lo que sé por la mitad de lo que ignoro


Ver Perfil
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #11 en: 5 Marzo 2010, 22:53 »

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 Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #12 en: 5 Marzo 2010, 23:47 »

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 Desconectado

Mensajes: 30


Ver Perfil
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #13 en: 6 Abril 2010, 17:12 »

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 Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #14 en: 6 Abril 2010, 17:20 »

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 Desconectado

Mensajes: 85



Ver Perfil
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #15 en: 7 Abril 2010, 12:00 »

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 Desconectado

Mensajes: 2


Ver Perfil
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #16 en: 26 Abril 2010, 04:10 »

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 Desconectado

Mensajes: 493



Ver Perfil
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #17 en: 26 Abril 2010, 16:18 »

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
Moderador
***
Desconectado Desconectado

Mensajes: 5.505


La mano invisible del mercado me robo la billetera


Ver Perfil WWW
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #18 en: 7 Mayo 2010, 11:34 »

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 Desconectado

Mensajes: 2


Ver Perfil
Re: |Lo que no hay que hacer en C/C++. Nivel basico|
« Respuesta #19 en: 7 Mayo 2010, 18:39 »

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

Páginas: 1 [2] 3 4 5 6 7 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda en C nivel básico.
Programación C/C++
Jukuqs 5 2,417 Último mensaje 26 Abril 2008, 14:56
por Jukuqs
Graficos Nivel Basico [Ayuda] « 1 2 »
Programación C/C++
ignorantev1.1 12 5,244 Último mensaje 20 Marzo 2010, 23:00
por leogtz
[Nivel 1/10] CrackMe básico C #4 « 1 2 »
Ingeniería Inversa
cibergolen 12 4,012 Último mensaje 30 Diciembre 2012, 22:42
por cibergolen
[C] problemas de ejecucion con un for (nivel basico, 1ro de carrera) [?] « 1 2 3 »
Programación C/C++
SoyelRobert 20 4,302 Último mensaje 16 Diciembre 2013, 21:24
por SoyelRobert
[Tutorial Nivel básico] Haciendo cantar a nuestro Crackme
Ingeniería Inversa
fary 5 905 Último mensaje 6 Febrero 2016, 00:03
por fary
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines