| 
	
		|  Autor | Tema: Seguimos necesitando fgets por seguridad?  (Leído 2,905 veces) |  
	| 
			| 
					
						| skan 
								       
								
								 Desconectado 
								Mensajes: 1.360
								
								
								
								
								
								   | 
 
Hola
 Hace un tiempo leí  Effective C++, donde se aconseja el uso de fgets() (y strncat) en vez de get() porque se puede especificar el número de caracteres a leer y así no se produce un desbordamiento de memoria.
 
 Varios libros nuevos, como el de Prata o Professional C++ no hablan de fgets.
 ¿Se debe a que ya no hace falta?
 Lo digo porque comandos como cin.get()  y cin.getline() pueden especificar el tamaño a leer.
 ¿Qué diferencia hay entre cin.get() y fgets()?
 
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| amchacon 
								       
								
								 Desconectado 
								Mensajes: 1.211
								
								   | 
 
En C++ ya no hace falta, menos cuando existe la clase string, cuyo tamaño puede modificarse sobre la marcha: string Texto;getline(cin,Texto); // Puedes leer infinitos caracteres
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| skan 
								       
								
								 Desconectado 
								Mensajes: 1.360
								
								
								
								
								
								   | 
 
En C++ ya no hace falta, menos cuando existe la clase string, cuyo tamaño puede modificarse sobre la marcha: string Texto;getline(cin,Texto); // Puedes leer infinitos caracteres
¿Y qué pasa si cin no cabe en memoria? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| amchacon 
								       
								
								 Desconectado 
								Mensajes: 1.211
								
								   | 
 
string es una clase que se ajusta solo, de modo que si metes 100 caracteres se reservaran 100 caracteres.
 Dado que cada caracter ocupa 1 byte, es muy díficil que tengas problemas de memoria (cuantos caracteres vas a meter? 1000000000?). Pero si así fuera lanzaría una excepcion (bad_alloc) que podrías manejar con un try y catch (o no la manejas, y entonces el programa finalizaría mostrando un mensaje de error).
 |  
						| 
								|  |  
								| « Última modificación: 14 Agosto 2013, 08:54 am por amchacon » |  En línea | 
 
 |  |  |  | 
			| 
					
						| skan 
								       
								
								 Desconectado 
								Mensajes: 1.360
								
								
								
								
								
								   | 
 
OK, gracias.  Lo que no entiendo es porque algunas cosas devuelven punteros (como los nombres de los array) y otras no (como los string)
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| 0xDani 
								       
								
								 Desconectado 
								Mensajes: 1.077
								
								   | 
 
OK, gracias.  Lo que no entiendo es porque algunas cosas devuelven punteros (como los nombres de los array) y otras no (como los string)
 
 Por que string es una clase built-in de la STL, que internamente también maneja un array de caracteres. Puedes acceder a ese array por medio de la función c_str() de la clase string. Saludos. |  
						| 
								|  |  
								|  |  En línea | 
 
 I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
 I code for $$$
 Hago trabajos en C/C++
 Contactar por PM
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Seguimos con el problema de la grabadora Software
 | zabatu | 1 | 2,730 |  8 Enero 2006, 20:15 pm por el-brujo
 |  
						|   |   | Seguimos cOn problemas??? Sugerencias y dudas sobre el Foro
 | mousehack | 5 | 3,359 |  22 Mayo 2006, 13:22 pm por -BeTa-
 |  
						|   |   | Aun seguimos en navidad ¿?
							« 1 2 » Sugerencias y dudas sobre el Foro
 | Hadess_inf | 13 | 6,107 |  2 Febrero 2008, 17:27 pm por Carloswaldo
 |  
						|   |   | Windows 10 ha mejorado en seguridad pero sigue necesitando antivirus Noticias
 | wolfbcn | 1 | 1,688 |  9 Diciembre 2015, 22:01 pm por Orubatosu
 |  
						|   |   | Nuevo y necesitando ayuda. Hacking
 | isaacdvid | 3 | 3,225 |  16 Febrero 2017, 00:40 am por RaloGomez
 |    |