On Fri, 3 Sep 2004 19:24:55 -0300, Felix Cuello <[EMAIL PROTECTED]> wrote:
> On Sat, Sep 04, 2004 at 12:06:57AM +0200, Haplo wrote:
> > > Lo que quiero hacer es leer esa palabra y guardarla en una variable, para
> > > ya despues manipularla como cualquier string,
> Che, no se compliquen tanto. La forma m�s sencilla de leer un archivo leyendo
> de a strings por vez [al menos me parece] es la siguiente:
> 
> [...]
> char mibuf[1024];
> [...]
>    while( fscanf(archivo, "%s", mibuf) != EOF ) {
> [...]
> esto agarra un archivo llamado mitexto.txt y va leyendo las cadenas
> 

La familia *scanf tiene el problema que no limita el tama�o de lo que
lee. Sino que lee hasta un \n o el final. Si lee un fichero con una
linea superior a 1024 caracteres escribir� fuera de la variable
asignada y causar� da�os. En el peor de los casos imagina un fichero
binario como una imagen iso sin ning�n caracter \n, leer�a en memoria
700 megas de un golpe bloqueando el ordenador causando otros da�os.

Conclusion usar fscanf es complicarse la vida porque deja muchos cabos
sueltos que el programador no controla. De ah� que se use fgets (u
otros que si permitan limitar el tama�o de lo leido).

PD. Aunque pueda parecer de estupido copiar una iso como un fichero
txt, nunca se puede subestimar la capacidad de un usuario/programador
de hacer estupideces.

Atte. javier m mora

Responder a