Elmord's Magic Valley

Computers, languages, and computer languages. Às vezes em Português, sometimes in English.

Coisas que você não sabe sobre a glibc

2013-05-29 11:48 -0300. Tags: comp, prog, c, unix, em-portugues

Em algum momento do ano passado, por falta de coisa melhor para fazer, eu me parei a ler o manual da GNU libc. Não cheguei a ir muito longe, mas descobri um bocado de coisas interessantes no processo.

scanf

A scanf é uma das primeiras funções que vemos quando aprendemos C. Por isso mesmo, acabamos vendo só a funcionalidade básica para sobrevivência. Aí achamos que conhecemos a scanf e nunca mais nos preocupamos com ela. Ela possui um bocado de features interessantes, entretanto:

Other I/O

Miscelânea

No más

A glibc tem muita coisa (a versão em PDF do manual tem cerca de mil páginas). Vale a pena dar uma olhada no manual, nem que seja apenas para descobrir que tipo de recursos ela fornece, caso um dia você precise de algum deles.

Comentários / Comments (3)

Marcus Aurelius, 2013-05-30 13:02:37 -0300 #

Meus programas em C na faculdade sempre tinham uma função "limpa_linha" (lia e descartava até o '\n') para evitar esses loops infinitos, hahaha.

%i no scanf: já me pegou uma vez (dava problema quando o usuário digitava 30/08/2013: 08 não é um número octal válido)... Sempre %d desde então.

Engolir whitespace: Como "%c" é um dos poucos que não engole whitespace, eu geralmente substituía por " %c" (espaço antes do %). As pessoas se surpreendiam quando eu resolvia bugs de entrada colocando esse espaço ali (curiosamente, deve ser antes e não funciona depois do %c, se bem me lembro). Outra coisa interessante era o "%79[^\n]" para ler uma linha com espaços.

Extensões GNU, POSIX: Maldito comitê de padronização do C, que só se preocupa com números complexos e nada que ajude com strings...

Isso me lembra:

WG14 are a pile of morons, who have been steadily ruining
the C language with utter and useless crap, while only
solving an absolute minority of the actual problems and not
in any meaningful way developed the language during their
time of custody.

http://lists.freebsd.org/pipermail/freebsd-threads/2011-December/005179.html


Vítor De Araújo, 2013-05-30 15:01:13 -0300 #

Quando eu fiz Algoritmos e Programação ensinaram a usar fflush(stdin) pra limpar o buffer. Mas só funciona no Windows; no Linux tem que usar a __fpurge (cujo manual diz que "Usually it is a mistake to want to discard input buffers" :P)...

Adorei o que vem logo antes do complaint do cara:

[quote]
>I think you are out of order in this public comment and you should
>apologise to those who have served on WG14.

Fuck if will apologize!

I will even repeat and clarify my charge to make sure that it is
not misunderstood:
[/quote]

:P


Não é pra tu ver isso, 2013-06-05 15:14:05 -0300 #

http://myscriptx.com/dl/1169/didnt-read-lol-mythbusters.gif


Deixe um comentário / Leave a comment

Main menu

Recent posts

Recent comments

Tags

em-portugues (213) comp (148) prog (71) in-english (62) life (49) unix (38) pldesign (37) lang (32) random (28) about (28) mind (26) lisp (25) fenius (22) mundane (22) web (20) ramble (18) img (13) rant (12) hel (12) scheme (10) privacy (10) freedom (8) esperanto (7) music (7) lash (7) bash (7) academia (7) copyright (7) home (6) mestrado (6) shell (6) android (5) conlang (5) misc (5) emacs (5) latex (4) editor (4) etymology (4) php (4) worldly (4) book (4) politics (4) network (3) c (3) tour-de-scheme (3) security (3) kbd (3) film (3) wrong (3) cook (2) treta (2) poem (2) physics (2) x11 (2) audio (2) comic (2) lows (2) llvm (2) wm (2) philosophy (2) perl (1) wayland (1) ai (1) german (1) en-esperanto (1) golang (1) translation (1) kindle (1) pointless (1) old-chinese (1)

Elsewhere

Quod vide


Copyright © 2010-2024 Vítor De Araújo
O conteúdo deste blog, a menos que de outra forma especificado, pode ser utilizado segundo os termos da licença Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.

Powered by Blognir.