por qué fgetc retorna int

27 views
Skip to first unread message

Enrique Nieloud

unread,
Mar 6, 2012, 11:54:30 AM3/6/12
to cppba
Sí, eso,

¿Por qué fgetc retorna int en vez de un char?

Juan Carlos Franzoy

unread,
Mar 6, 2012, 11:56:46 AM3/6/12
to cp...@googlegroups.com
para poder retornar EOF?

El 6 de marzo de 2012 13:54, Enrique Nieloud <enie...@gmail.com> escribió:
Sí, eso,

¿Por qué fgetc retorna int en vez de un char?

--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"



--
  Juan Carlos Franzoy
Licenciado en Sistemas

Enrique Nieloud

unread,
Mar 6, 2012, 11:56:55 AM3/6/12
to cppba
será para poder hacer un bucle tipo:

while ((ch = fgetc(file)) != EOF)
{
}

2012/3/6 Enrique Nieloud <enie...@gmail.com>:

Enrique Nieloud

unread,
Mar 6, 2012, 11:58:26 AM3/6/12
to cp...@googlegroups.com
ja! estabamos escribiendo lo mismo al mismo tiempo.
De ser a así, me hace bastante ruido esa "solución"

2012/3/6 Juan Carlos Franzoy <jfra...@gmail.com>:

Fernando Cacciola

unread,
Mar 6, 2012, 11:59:09 AM3/6/12
to cp...@googlegroups.com
Hmm, bueno, mas bien para poder retornar EOF.

Que es independiente de en qué expresión lo querrías usar.

Fijate que lo mismo pasa con char_traits.
::eof() es un int

Saludos

2012/3/6 Enrique Nieloud <enie...@gmail.com>:

> --
> ¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
> En caso de duda visita "http://groups.google.com/group/cppba"

--
Fernando Cacciola
SciSoft Consulting, Founder
http://www.scisoft-consulting.com

Fernando Cacciola

unread,
Mar 6, 2012, 11:59:59 AM3/6/12
to cp...@googlegroups.com
Tirada la piedra...

OK, ¿Por qué? Qué habrías hecho en su lugar?

2012/3/6 Enrique Nieloud <enie...@gmail.com>:

--

Enrique Nieloud

unread,
Mar 6, 2012, 12:02:20 PM3/6/12
to cp...@googlegroups.com
> Tirada la piedra...
>
> OK, ¿Por qué? Qué habrías hecho en su lugar?

Yo sabía que se venía esa pregunta...

y que se yo... si "getc" es abreviatura de getchar, es lógico que
devuelva un "char" y no otro tipo de dato.

Carlos Cattaneo

unread,
Mar 6, 2012, 12:06:08 PM3/6/12
to cp...@googlegroups.com
Salvando la distancia histórica, yo hubiera devuelto
 
boost::optional<char>
 
:-)

Fernando Cacciola

unread,
Mar 6, 2012, 12:06:42 PM3/6/12
to cp...@googlegroups.com
+1 :)

2012/3/6 Carlos Cattaneo <carlosc...@yahoo.com>:

Fernando Cacciola

unread,
Mar 6, 2012, 12:07:16 PM3/6/12
to cp...@googlegroups.com
Y dentro de no mucho:

std::optionl<char>

2012/3/6 Fernando Cacciola <fernando...@gmail.com>:

Fernando Cacciola

unread,
Mar 6, 2012, 12:14:23 PM3/6/12
to cp...@googlegroups.com
AH OK, vos te referís a que no harías que fgetc() sea responsable de
indicar el final del archivo.
Bueno es muy razonable, y de hecho es así en las funciones de IO de
otros lenguajes, como C# (va, .Net) donde el "char" es unicode y no es
posible escoger ningún valor de su rango para indicar EOF.

Enrique Nieloud

unread,
Mar 6, 2012, 12:19:08 PM3/6/12
to cp...@googlegroups.com
claaaaro, a eso me refiero.

quizá algo tipo:

int eof ( FILE * stream );

(puse int en vez de bool)

Pero supongo que hicieron un 2x1 por cuestiones de performance.
Como decía Carlos allá arriba hay mucha "distancia histórica".

Y me hace pensar el comentario de ustedes que le voy a dar más bolilla
a boost::optional

2012/3/6 Fernando Cacciola <fernando...@gmail.com>:

Hugo Arregui

unread,
Mar 6, 2012, 12:36:40 PM3/6/12
to cp...@googlegroups.com
No conocía boost::optional, que buena idea!. Estas pequeñas ideas
simples e ingeniosas tienen un impacto enorme en la forma de trabajar.

Fernando, std::optionl (o std::optional si fue un error de tipeo) es
una adaptación de boost::optional a std?

Saludos,
Hugo.

Fernando Cacciola

unread,
Mar 6, 2012, 12:42:45 PM3/6/12
to cp...@googlegroups.com
2012/3/6 Hugo Arregui <hugo.a...@gmail.com>:

> No conocía boost::optional, que buena idea!. Estas pequeñas ideas
> simples e ingeniosas tienen un impacto enorme en la forma de trabajar.
>
> Fernando, std::optionl (o std::optional si fue un error de tipeo)

Ejem...

> es una adaptación de boost::optional a std?
>

Exacto.

O mas concretamente, es un proposal para que exista esa utilidad en el
próximo TR (no va a haber un gran y lejano TR2 esta vez, sino algo así
como una serie de "entregas" a medida que las librarias van estando
listas)

Va a ser algo distinto al boost::optional<> de la 1.49 porque ese es
MUY viejo. Se va a parecer mas al que va a salir en la 1.50 y en el
cual estoy trabajando.

Saludos

Daniel Gutson

unread,
Mar 6, 2012, 1:27:01 PM3/6/12
to cp...@googlegroups.com
Acoto al mail original.

Creo que retorna un int, porque querían poder devolver información de control junto con información de datos. Es como si fueran dos canales en uno.
Un caso particular de lo que va en el canal de control, es el EOF. Pero recuerden q esto es del año del pedo, había un montón de cosas (ej se usaba para las cintas) de caracteres especiales.

2012/3/6 Fernando Cacciola <fernando...@gmail.com>
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

Fernando Pelliccioni

unread,
Apr 19, 2012, 1:43:21 PM4/19/12
to cp...@googlegroups.com


2012/3/6 Fernando Cacciola <fernando...@gmail.com>

2012/3/6 Hugo Arregui <hugo.a...@gmail.com>:
> No conocía boost::optional, que buena idea!. Estas pequeñas ideas
> simples e ingeniosas tienen un impacto enorme en la forma de trabajar.
>
> Fernando, std::optionl (o std::optional si fue un error de tipeo)

Ejem...

> es una adaptación de boost::optional a std?
>
Exacto.

O mas concretamente, es un proposal para que exista esa utilidad en el
próximo TR (no va a haber un gran y lejano TR2 esta vez, sino algo así
como una serie de "entregas" a medida que las librarias van estando
listas)

Va a ser algo distinto al boost::optional<> de la 1.49 porque ese es
MUY viejo. Se va a parecer mas al que va a salir en la 1.50 y en el
cual estoy trabajando.

Saludos


Fer, ¿ está disponible el paper de std::optional ? 
Yo creía haber visto algo, pero, no lo encuentro.
 
Saludos,
FP.

Fernando Cacciola

unread,
Apr 19, 2012, 1:51:41 PM4/19/12
to cp...@googlegroups.com
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1878.htm

:)

> --
> ¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido
> este mesaje por error.
> En caso de duda visita "http://groups.google.com/group/cppba"

--

Fernando Cacciola

unread,
Apr 19, 2012, 1:55:21 PM4/19/12
to cp...@googlegroups.com
OJO, esa es la version 1 (de hace muchos años ya)

Estoy trabajando (como diría un mosquito) junto con Andrzej
Krzemienski en la nueva version actualizada para C++11

Saludos

Fernando Pelliccioni

unread,
Apr 19, 2012, 3:37:53 PM4/19/12
to cp...@googlegroups.com

Ah entonces me parece que lo que leí fue una discusión en la lista de boost.

Me intribaga ver sí van a seguir incluyendo las implicit  conventions a bool, y optional<bool>.

Saludos.

Fernando Cacciola

unread,
Apr 25, 2012, 6:00:35 PM4/25/12
to cp...@googlegroups.com
Hola Fernando

> Ah entonces me parece que lo que leí fue una discusión en la lista de boost.
>

Acá está nuestro current draft:

http://kojot.sggw.waw.pl/~akrzemi1/optional/tr2.optional.proposal.18MAR2012.html

Tengan en cuenta que es work in progress

> Me intribaga ver sí van a seguir incluyendo las implicit  conventions a
> bool, y optional<bool>.
>
Esto es todo un tema, y al fin de cuentas hay que elegir una u otra
cosa y proponerla.
En el paper vas a ver en la sección:

Contextual conversion to bool and using nullptr for indicating
opt-initialization

por qué está propuesto del modo en que lo hicimos.

Saludos

Fernando Pelliccioni

unread,
Apr 25, 2012, 10:22:08 PM4/25/12
to cp...@googlegroups.com


2012/4/25 Fernando Cacciola <fernando...@gmail.com>

Hola Fernando

> Ah entonces me parece que lo que leí fue una discusión en la lista de boost.
>

Acá está nuestro current draft:

http://kojot.sggw.waw.pl/~akrzemi1/optional/tr2.optional.proposal.18MAR2012.html

Tengan en cuenta que es work in progress

> Me intribaga ver sí van a seguir incluyendo las implicit  conventions a
> bool, y optional<bool>.
>
Esto es todo un tema, y al fin de cuentas hay que elegir una u otra
cosa y proponerla.
En el paper vas a ver en la sección:

Contextual conversion to bool and using nullptr for indicating
opt-initialization

por qué está propuesto del modo en que lo hicimos.

Saludos


Espectacular :) 
Lo voy leyendo (en cuotas) y me saco las dudas!

Gracias!

Saludos, 
FP.
Reply all
Reply to author
Forward
0 new messages