Programando em C Volume II - A Biblioteca Padrão de C

C continua sendo uma das linguagens de programação mais populares em termos de postos de trabalho e programas publicamente disponíveis.

VITRINE Os TOP de vendas !!

Por: R$ 105,00ou X de

+-
Comprar
Opções de Parcelamento:
  • à vista R$ 105,00
  • 2X de R$ 52,50 sem juros
Outras formas de pagamento

Quem viu este produto , comprou

Quem viu este produto , também se interessou

  • Descrição
    Resenha

    C continua sendo uma das linguagens de programação mais populares em termos de postos de trabalho e programas publicamente disponíveis. Levando-se isso em consideração, é imperativo o domínio desta linguagem no currículo de qualquer programador. A biblioteca padrão de C complementa a linguagem oferecendo recursos que facilitam a escrita de programas. Este volume examina minuciosamente todos os componentes dos 24 cabeçalhos que integram esta biblioteca. São explorados ainda outros tópicos importantes em programação, como localização, portabilidade, caracteres extensos e multibytes, tratamento de sinais e exceções. Este volume é recomendado como curso intermediário de programação e tem como objetivos servir como referência para programadores de C e ensinar alguns tópicos avançados de programação usando esta linguagem. O público-alvo são professores e estudantes de Computação e Engenharia, mas o texto também pode ser utilizado por administradores de sistemas Unix/Linux e autodidatas em programação. No site do livro na internet encontram-se os códigos-fonte de todos os exemplos apresentados e de outros programas não inseridos no livro, e há ainda vasto material que complementa o texto.
  • Sobre o Autor
  • Especificação

    Características

    AssuntosC++

    Especificações

    Sobre o AutorUlysses de Oliveira

    Ulysses de Oliveira, professor do Departamento de Informática (CCEN) da Universidade Federal da Paraíba, graduou-se em Engenharia Civil (1982) e em Física (1983) nesta universidade. Em 1988, obteve o título de Mestre em Ciências no Instituto Militar de Engenharia (IME), no Rio de Janeiro, na área de Engenharia de Sistemas. Em 1996, obteve o título de PhD em Ciências Cognitivas e da Computação na Universidade de Sussex, na Inglaterra. Possui mais de quinze anos de ensino de programação em diversas linguagens e experiência em programação em C e C++ nas plataformas Unix, Macintosh e Windows/DOS.
    Informações TécnicasCapítulo 1
    Introdução à biblioteca padrão de C - 1 1.1 Cabeçalhos - 3 1.2 Componentes - 4 1.3 Recomendações gerais de uso - 5 1.4 Macros e funções - 8 1.5 Cabeçalhos pré-compilados - 10 1.6 Visão geral dos cabeçalhos padronizados - 10 1.6.1 - 11 1.6.2 (C99) - 11 1.6.3 - 13 1.6.4 - 14 1.6.5 (C99) - 14 1.6.6 - 15 1.6.7 (C99) - 17 1.6.8 - 18 1.6.9 - 18 1.6.10 - 19 1.6.11 - 20 1.6.12 - 25 1.6.13 - 25 1.6.14 - 26 1.6.15 (C99) - 27 1.6.16- 27 1.6.17 (C99) - 28 1.6.18 - 30 1.6.19 - 33 1.6.20 - 36 1.6.21 (C99) - 38 1.6.22 - 38 1.6.23 - 39 1.6.24 - 44 1.7 Componentes repetidos em cabeçalhos - 45 1.7.1 Tipo size_t - 45 1.7.2 Macro NULL - 46 1.7.3 Outros componentes repetidos - 47 1.8 Sistemas com hospedeiro e sistemas livres - 47 1.9 Exercícios de Revisão – 48
    Capítulo 2
    Números inteiros - 51 2.1 Introdução - 53 2.2 Tipos inteiros primitivos - 53 2.3 Propriedades dos tipos inteiros primitivos: - 55 2.4 Portabilidade de inteiros I: (C99) - 58 2.4.1 Tipos - 58 2.4.2 Macros - 59 2.5 Portabilidade de inteiros II:(C99) - 62 2.5.1 Tipo imaxdiv_t - 62 2.5.2 Macros - 63 2.5.3 Funções - 66 imaxdiv() (C99) - 67 strtoimax() (C99) - 68 strtoumax() (C99) - 70 wcstoimax() (C99) - 72 wcstoumax() (C99) - 73 2.6 Operações aritméticas inteiras - 75 2.6.1 Tipos - 75 div_t - 75 ldiv_t - 75 lldiv_t (C99) - 75 2.6.2 Funções - 75 abs() - 75 div() - 76 labs() - 77 llabs() (C99) - 78 ldiv() - 79 lldiv() (C99) - 81 2.7 Exercícios de Revisão – 82
    Capítulo 3
    Números de ponto flutuante reai - 85 3.1 Introdução - 87 3.2 Tipos primitivos de ponto fl utuante reais - 87 3.3 Conceitos fundamentais de aritmética de ponto flutuante - 89 3.3.1 Underflow e overflow - 89 3.3.2 Representações - 89 3.3.3 Erros de domínio e de intervalo - 90 Erros de domínio - 91 Erros de intervalo - 91 3.3.4 Exceções de ponto flutuante - 91 3.3.5 Modos de arredondamento - 92 3.3.6 Precisão - 93 3.3.7 Ordenação - 94 3.4 Pragmas para operações de ponto flutuante - 94 3.4.1 Pragma FP_CONTRACT - 94 3.4.2 Pragma FENV_ACCESS - 95 3.5 Propriedades de números de ponto fl utuante: - 96 3.6 Operações de ponto fl utuante reais: - 102 3.6.1 Tipos - 102 double_t (C99) - 102 fl oat_t (C99) - 103 3.6.2 Macros - 103 FP_FAST_FMA (C99) - 103 FP_FAST_FMAF (C99) - 103 FP_FAST_FMAL (C99) - 104 FP_ILOGB0 (C99) - 104 FP_ILOGBNAN (C99) - 104 FP_INFINITE (C99) - 104 FP_NAN (C99) - 104 FP_NORMAL (C99) - 105 FP_SUBNORMAL (C99) - 105 FP_ZERO (C99) - 105 HUGE_VAL - 105 HUGE_VALF (C99) - 105 HUGE_VALL (C99) - 106 INFINITY - 106 MATH_ERRNO (C99) - 106 MATH_ERREXCEPT (C99) - 106 math_errhandling (C99) - 107 NAN (C99) - 107 Exemplo de uso de macros defi nidas em - 107 3.6.3 Visão geral das funções declaradas em - 108 3.6.4 Funções trigonométricas -111 acos() - 111 asin() - 111 atan() - 112 atan2() - 112 cos() - 114 sin() - 114 tan() - 115 3.6.5 Funções hiperbólicas - 115 acosh() (C99) - 115 asinh() (C99) - 116 atanh() (C99) - 116 cosh() - 117 sinh() - 118 tanh() - 118 3.6.6 Funções de arredondamento - 119 ceil() - 119 fl oor() - 120 llrint() (C99) - 121 llround() (C99) - 121 lrint() (C99)- 123 lround() (C99) - 123 nearbyint() (C99) - 124 nextafter() (C99) - 125 nexttoward() (C99) - 126 rint() (C99) - 128 round() (C99) - 129 trunc() (C99) - 130 3.6.7 Funções de erro - 131 erf() (C99) - 131 erfc() (C99) - 131 3.6.8 Funções exponenciais e logarítmicas - 132 cbrt() (C99) - 132 exp() - 133 exp2() (C99) - 134 expm1() (C99) - 134 frexp() - 135 ilogb() (C99) - 137 ldexp() - 137 log() - 138 log10() - 139 log1p() (C99) - 140 log2() (C99) - 140 logb() (C99) - 142 pow() - 143 scalbln() (C99) - 144 scalbn() (C99) - 145 sqrt() - 146 3.6.9 Funções de comparação - 147 fdim() (C99) - 147 fmax() (C99) - 147 fmin() (C99) - 148 3.6.10 Funções gama - 149 lgamma() (C99) - 149 tgamma() (C99) - 150 3.6.11 Funções de divisão - 151 fmod() - 151 remainder() (C99) - 152 remquo() (C99) - 152 3.6.12 Outras funções declaradas em - 154 copysign() (C99) - 154 fabs() - 155 fma() (C99) - 155 hypot() (C99) - 156 modf() - 157 nan() (C99) - 158 signbit() (C99) - 159 3.6.13 Macros de classifi cação - 160 fpclassify() (C99) - 160 isfi nite() (C99) - 162 isgreater() (C99) - 162 isgreaterequal() (C99) - 163 isinf() (C99) - 163 isless() (C99) - 164 islessequal() (C99) - 164 islessgreater() (C99) - 165 isnan() (C99) - 166 isnormal() (C99) - 166 isunordered() (C99) - 167 3.7 Tratamento de exceções e arredondamento: (C99) - 169 3.7.1 Tipos - 169 fenv_t - 169 fexcept_t - 169 3.7.2 Macros - 169 FE_ALL_EXCEPT - 170 FE_DFL_ENV - 170 FE_DIVBYZERO - 170 FE_DOWNWARD - 170 FE_INEXACT - 171 FE_INVALID - 171 FE_OVERFLOW - 171 FE_TONEAREST - 172 FE_TOWARDZERO - 172 FE_UNDERFLOW - 172 FE_UPWARD - 172 3.7.3 Funções - 173 feclearexcept() (C99) - 173 fegetenv() (C99) - 173 fegetexceptfl ag() (C99) - 174 fegetround() (C99) - 175 feholdexcept() (C99) - 176 feraiseexcept() (C99) - 176 fesetenv() (C99) - 179 fesetexceptfl ag() (C99) - 181 fesetround() (C99) - 184 fetestexcept() (C99) - 186 feupdateenv() (C99) - 187 3.8 Exercícios de Revisão – 191
    Capítulo 4
    Números de ponto fl utuante complexos e macros genéricas - 197 4.1 Introdução - 199 4.2 Tipos primitivos de ponto fl utuante complexos - 199 4.3 Pragma CX_LIMITED_RANGE - 200 4.4 Suporte para números complexos: (C99) - 202 4.4.1 Macros - 202 4.4.2 Visão geral das funções declaradas em - 202 4.4.3 Funções trigonométricas complexas - 204 cacos() (C99) - 204 casin() (C99) - 204 catan() (C99) - 205 ccos() (C99) - 205 csin() (C99) - 206 ctan() (C99) - 206 4.4.4 Funções hiperbólicas complexas - 208 cacosh() (C99) - 208 casinh() (C99)- 208 catanh() (C99) - 209 ccosh() (C99) - 209 csinh() (C99) - 210 ctanh() (C99) - 210 4.4.5 Funções exponenciais e logarítmicas complexas - 212 cexp() (C99) - 212 clog() (C99) - 212 cpow() (C99) - 213 csqrt() (C99) - 213 4.4.6 Outras funções declaradas em - 214 cabs() (C99) - 215 carg() (C99) - 215 cimag() (C99) - 215 conj() (C99) - 216 cproj() (C99) - 216 creal() (C99) - 217 4.5 Macros aritméticas genéricas: (C99) - 218 4.6 Exercícios de Revisão – 223
    Capítulo 5
    Localização e datação - 225 5.1 Introdução - 227 5.1.1 Localidades - 227 5.1.2 Implementação de localidades em sistemas operacionais da família Unix - 228 5.1.3 Localização e internacionalização - 230 5.1.4 A base de dados CLDR e a biblioteca ICU - 230 5.2 Localização de programas: - 231 5.2.1 Estruturas lconv - 231 5.2.2 Macros - 237 5.2.3 Funções - 238 localeconv() - 238 setlocale() - 240 5.3 Datas e horas: - 243 5.3.1 Tipos - 244 clock_t - 244 size_t - 244 time_t - 244 tm - 244 5.3.2 Macros - 246 NULL - 246 CLOCKS_PER_SEC - 246 5.3.3 Funções - 247 asctime() - 247 clock() - 247 ctime() - 249 difftime() - 250 gmtime() - 251 localtime() - 252 mktime() - 253 strftime() - 255 time() - 257 5.4 Exercícios de Revisão – 258
    Capítulo 6
    Caracteres e strings monobytes - 261 6.1 Introdução - 263 6.1.1 Conjunto básico de caracteres - 263 6.1.2 Códigos de caracteres - 265 6.1.3 Páginas de código - 267 6.1.4 Problemas com caracteres monobytes - 268 6.1.5 Caracteres constantes - 269 6.1.6 Strings constantes - 270 6.2 Classifi cação e transformação de caracteres: - 271 6.2.1 Funções de classifi cação de caracteres - 271 isalnum() - 271 isalpha() - 272 isblank() (C99) - 273 iscntrl() - 274 isdigit() - 275 isgraph() - 275 islower() - 276 isprint() - 276 ispunct() - 277 isspace() - 278 isupper() - 280 isxdigit() - 280 6.2.2 Funções de transformação de caracteres - 282 tolower() - 282 toupper() - 282 6.3 Processamento de strings e blocos: - 284 6.3.1 Tipo size_t - 284 6.3.2 Macro NULL - 284 6.3.3 Funções de processamento de blocos - 284 memchr() - 284 memcmp() - 285 memcpy() - 287 memmove() - 289 memset() - 290 6.3.4 Funções de processamento de strings - 291 strcat() - 291 strchr() - 292 strcpy() - 293 strcspn() - 295 strerror() - 297 strlen() - 298 strncat() - 299 strncpy() - 301 strpbrk() - 302 strrchr() - 303 strspn() - 304 strstr() - 306 strtok() - 307 6.4 Introdução à colação de strings - 309 6.4.1 Colação versus ordenação - 310 6.4.2 Funções de colação de strings - 311 strcmp() - 312 strncmp() - 316 strcoll() - - 317 strxfrm() - 319 6.5 Funções de conversão de strings em números - 322 6.5.1 Conversões de strings em números inteiros - 323 atoi(), atol() e atoll() (C99) - 323 strtol(), strtoll() (C99), strtoul(), strtoull() (C99) - 325 6.5.2 Conversões de strings em números de ponto fl utuante reais - 327 atof() - 327 strtod(), strtof() (C99), strtold() (C99) - 329 6.5.3 Outras funções de conversão de strings em números - 331 6.6 Exercícios de Revisão – 332
    Capítulo 7
    Caracteres extensos e multibytes I: conceitos - 335 7.1 Introdução - 337 7.2 Caracteres e strings extensos - 337 7.3 Caracteres e strings multibytes - 338 7.3.1 Codifi cações multibytes com estado - 339 7.3.2 Codifi cações multibytes sem estado - 340 7.4 Caracteres extensos versus caracteres multibytes - 340 7.5 Códigos de caracteres extensos - 341 7.5.1 Unicode - 341 7.5.2 ISO 10646 - 344 7.5.3 Diferenças entre Unicode e ISO 10646 - 344 7.6 Esquemas de codifi cação de caracteres - 344 7.6.1 UTF-8 - 345 7.6.2 UTF-16, UTF-16BE e UTF-16LE - 348 7.6.3 UTF-32, UTF-32BE e UTF-32LE - 349 7.6.4 UCS-2 - 350 7.6.5 UCS-4 - 350 7.6.6 Escolha de um esquema de codifi cação - 350 7.7 Colação avançada - 351 7.7.1 Colação e localidade - 351 7.7.2 Colação em múltiplos níveis - .. 352 7.7.3 Casos especiais de colação - 354 Acentuação francesa - 354 Caracteres com contração - 355 Caracteres com expansão - 356 Colação aproximada - 356 7.7.4 Algoritmo de Colação Unicode - 356 Elementos de colação variáveis - 357 Chaves de ordenação - 359 Tabela DUCET - 360 Normalização - 362 Resumo do algoritmo UCA - 363 7.7.5 Busca - 364 7.7.6 Exemplo - 364 7.8 Exercícios de Revisão - 367
    Capítulo 8
    Caracteres extensos e multibytes II: suporte - 369 8.1 Introdução - 371 8.2 Conceitos e terminologias - 372 8.3 Implementações de caracteres extensos e multibytes em C - 375 8.3.1 Caracteres e strings extensos em C - 375 8.3.2 Caracteres e strings multibytes em C - 377 8.4 Conversões entre caracteres e strings extensos e multibytes: - 379 8.4.1 Preliminares - 379 8.4.2 Funções de conversão entre caracteres e strings extensos e multibytes I - 380 mblen() - 380 mbstowcs() - 381 mbtowc() - 385 wcstombs() - 388 wctomb() - 393 8.5 Suporte para caracteres multibytes e extensos: - 395 8.5.1 Tipos - 396 mbstate_t - 396 size_t - 396 tm - 396 wchar_t - 397 wctype_t - 397 wint_t - 397 8.5.2 Macros - 397 NULL - 397 WCHAR_MAX - 398 WCHAR_MIN - 398 WEOF - 398 8.5.3 Funções de conversão entre caracteres e strings extensos e multibytes II - 399 btowc() - 399 mbrlen() - 401 mbrtowc() - 405 mbsinit() - 408 mbsrtowcs() - 409 wcrtomb() - 412 wcsrtombs() - 414 wctob() - 417 8.5.4 Funções de processamento de arrays de caracteres extensos - 419 wmemchr() - 419 wmemcmp() - 420 wmemcpy() - 421 wmemmove() - 422 wmemset() - 424 8.5.5 Funções de processamento de strings extensos - 425 wcscat() - 425 wcschr() - 426 wcscmp() - 428 wcscoll() - 429 wcscpy() - 433 wcscspn() - 434 wcsftime() - 435 wcslen() - 437 wcsncat() - 438 wcsncmp() - 440 wcsncpy() - 442 wcspbrk() - 443 wcsrchr() - 445 wcsspn() - 446 wcsstr() - 447 wcstok() - 448 wcsxfrm() - 450 8.5.6 Funções de conversão de strings extensos em números - 453 wcstol(), wcstoll() (C99), wcstoul(), wcstoull() (C99) - 454 wcstod(), wcstof() (C99), wcstold() - 456 8.6 Classifi cação e transformação de caracteres extensos: - 459 8.6.1 Tipos - 459 wctrans_t - 459 wctype_t - 459 wint_t - 460 8.6.2 Macro WEOF - 460 8.6.3 Funções de classifi cação de caracteres extensos - 460 iswctype() - 467 wctype() - 469 8.6.4 Funções de transformação de caracteres extensos - 471 towctrans() - 471 towlower() - 471 towupper() - 472 wctrans() - 473 8.7 Exercícios de Revisão – 475
    Capítulo 9
    Funções com listas de argumentos variáveis - 479 9.1 Introdução - 481 9.2 Suporte para listas de argumentos variáveis: - 482 9.2.1 Tipo va_list - 482 9.2.2 Macros - 483 va_start() - 483 va_arg() - 483 va_end() - 484 va_copy() (C99) - 485 9.3 Como criar funções com listas de argumentos variáveis - 486 9.3.1 Uso direto de listas de argumentos variáveis - 486 9.3.2 Uso indireto de listas de argumentos variáveis - 488 9.4 Exemplos de funções com listas de argumentos variáveis - 490 9.5 Exercícios de Revisão - 498
    Capítulo 10
    Entrada e saída - 501 10.1 Introdução - 503 10.2 Conceitos fundamentais de entrada e saída - 503 10.2.1 Processamento de entrada e saída - 503 10.2.2 Streams - 503 10.2.3 Processamento de arquivos - 503 10.2.4 Formatos de arquivos - 504 10.2.5 Acesso a arquivos - 504 10.2.6 Streams padronizados: stdin, stdout e stderr - 505 10.2.7 Entrada e saída formatadas - 505 10.2.8 Buffering - 506 10.2.9 Orientação de streams - 506 10.3 Processamento de arquivos em C na prática - 508 10.4 Tipos - 510 fpos_t - 510 FILE - 510 10.5 Macros - 511 10.6 Variáveis globais - 512 10.7 Funções - 513 10.7.1 Abertura e fechamento de arquivos - 513 fopen() - 513 fclose() - 515 freopen() - 517 10.7.2 Gerenciamento de buffers - 519 setbuf() - 519 setvbuf() - 520 ffl ush() - 523 10.7.3 Processamento de caracteres monobytes - 524 getc() e fgetc() - 524 putc() e fputc() - 526 getchar() - 527 putchar() - 528 10.7.4 Processamento de linhas - 529 fgets() - 529 fputs() - 531 gets() - 532 puts() - 534 10.7.5 Processamento de blocos - 535 fread() - 535 fwrite() - 537 10.7.6 Entrada formatada: a família de funções scanf - 539 fscanf() - 541 scanf() - 542 vfscanf() - 544 vscanf() - 547 10.7.7 Saída formatada: a família de funções printf - 549 fprintf() - 552 printf() - 553 vfprintf() - 554 vprintf() - 555 10.7.8 Formatação em memória -557 sscanf() - 558 vsscanf() (C99) - 560 snprintf() (C99) - 562 sprintf() - 566 vsprintf() - 568 vsnprintf() (C99) - 570 10.7.9 Funções de posicionamento (acesso direto) - 572 fseek() - 572 ftell() - 576 fgetpos() - 579 fsetpos() - 580 rewind() - 582 10.7.10 Gerenciamento de arquivos - 584 remove() - 584 rename() - 585 10.7.11 Arquivos temporários - 586 tmpfi le() - 586 tmpnam() - 587 10.7.12 Detecção de erros em streams - 590 feof() - 590 clearerr() - 591 ferror() - 592 10.7.13 Funções perror() e ungetc() - 593 perror() - 593 ungetc() - 594 10.8 Funções de entrada e saída de caracteres e strings extensos - 597 fgetwc() e getwc() - 597 fgetws() - 598 fputwc() e putwc() - 600 fputws() - 601 fwide() - 602 fwprintf() - 605 fwscanf() - 606 getwchar() - 607 putwchar() - 608 swprintf() - 608 swscanf() - 610 ungetwc() - 611 vfwprintf() - 612 vfwscanf() (C99) - 615 vswprintf() - 616 vswscanf() (C99) - 618 vwprintf() - 621 vwscanf() (C99) - 622 wprintf() - 624 wscanf() - 624 10.9 Exercícios de Revisão – 626
    Capítulo 11
    Suporte para legibilidade e robustez - 633 11.1 Introdução - 635 11.2 Macros para o tipo booleano: (C99) - 636 11.3 Nomes legíveis para operadores: - 637 11.4 Macro assert(): - 639 11.5 Classifi cação de erros: - 640 11.5.1 Macros - 641 11.5.2 Variável Global errno - 641 11.6 Tratamento de sinais: - 644 11.6.1 Tipo sig_atomic_t - 646 11.6.2 Macros - 647 SIGFPE - 648 SIGILL - 648 SIGSEGV - 649 SIGABRT - 649 SIGTERM - 649 SIGINT - 650 SIG_DFL - 650 SIG_IGN - 650 SIG_ERR - 651 11.6.3 Funções - 651 raise() - 651 signal() - 652 11.7 Desvios generalizados: - 663 11.7.1 Tipo jmp_buf - 663 11.7.2 Funções longjmp() e setjmp() - 663 setjmp() - 664 longjmp() - 665 11.7.3 Como entender longjmp() e setjmp() - 668 11.7.4 Tratamento de exceções usando longjmp() e setjmp() - 674 11.8 Relação entre sinais, interrupções e exceções - 681 11.9 Exercícios de Revisão – 682
    Capítulo 12
    Miscelânea de tipos, funções e macros - 687 12.1 Introdução - 689 12.2 Cabeçalho - 689 12.2.1 Tipos - 690 size_t - 690 div_t, ldiv_t, lldiv_t - 690 wchar_t - 690 12.2.2 Macros - 690 EXIT_FAILURE - 690 EXIT_SUCCESS - 690 MB_CUR_MAX - 691 RAND_MAX - 691 NULL - 691 12.2.3 Funções de controle de processos - 691 abort() - 691 atexit() - 693 _Exit() (C99) - 694 exit() - 695 getenv() - 696 system() - 697 12.2.4 Funções de geração de números aleatórios - 700 rand() - 700 srand() - 701 12.2.5 Funções de alocação dinâmica de memória - 703 calloc() - 703 malloc() - 704 realloc() - 706 free() - 708 12.2.6 Funções de busca e ordenação de dados - 710 bsearch() - 710 qsort() - 713 12.2.7 Funções de aritmética inteira - 715 12.2.8 Funções de conversão de strings em números inteiros - 715 12.2.9 Funções de conversão de strings em números de ponto fl utuante reais - 716 12.2.10 Funções de conversão entre caracteres extensos e multibytes - 716 12.3 Miscelânea de tipos e macros: - 717 12.3.1 Tipos - 717 ptrdiff_t - 717 size_t - 718 wchar_t - 718 12.3.2 Macros - 718 NULL - 718 offsetof() - 718 12.4 Exercícios de Revisão – 720
    Capítulo 13
    Portabilidade de programas em C - 723 13.1 Introdução - 725 13.2 Portabilidade e padronização - 725 13.3 Ordenação de bytes (endianess) - 728 13.4 Alinhamento de variáveis e preenchimento de estruturas - 739 13.5 Aritmética inteira - 749 13.5.1 Tipos inteiros não portáveis - 749 13.5.2 Overfl ow - 749 13.5.3 signed char e unsigned char - 751 13.6 Caracteres e strings - 752 13.7 Compiladores - 756 13.8 Sistemas operacionais - 757 13.9 Representações de quebra de linha - 758 13.10 Aspectos pragmáticos de portabilidade - 760 13.11 Exercícios de Revisão – 762 Apêndice A - Construtores da linguagem C - 767 A.1 Introdução - 769 A.1.1 Palavras-chave - 769 A.1.2 Identifi cadores reservados - 770 A.2 Referências de construtores usados em C - 771 A.3 Identifi cadores reservados para uso futuro - 805 A.4 Estatísticas da linguagem C - 806 A.4.1 Linguagem C - 806 A.4.2 Biblioteca padrão de C – 807 Apêndice B - Especifi cadores de formato de entrada e saída - .809 B.1 Introdução - 811 B.1.1 Recomendações de uso - 811 B.1.2 Notação - 812 B.2 Especifi cadores de formato da família printf - 813 B.2.1 Formato geral - 813 B.2.2 Sinalizadores - 813 B.2.3 Largura - 814 B.2.4 Precisão - 814 B.2.5 Tipo de especifi cador - 814 B.2.6 Prefi xo - 815 B.2.7 Composições de especifi cadores de formato - 817 a e A (C99) - 817 c - 818 d e i - 819 e, E - 820 f - 821 F (C99) - 822 g e G - 822 n - 823 o - 824 p - 825 s - 826 u - 827 x e X - 828 % - 829 B.2.8 Exemplos adicionais - 829 B.2.9 Resumo de especifi cadores de formato - 831 B.3 Especifi cadores de formato da família scanf - 834 B.3.1 Formato geral - 834 B.3.2 Asterisco - 834 B.3.3 Largura - 836 B.3.4 Tipo de especifi cador - 836 B.3.5 Prefi xo - 837 B.3.6 Composições de especifi cadores de formato - 837 a e A (C99) - 838 c - 838 d - 839 e, E - 840 f - 840 F (C99) - 841 g e G - 841 i - 841 n - 843 o - 844 p - 845 s -846 u -847 x e X - 848 [caracteres] - 849 % - 850 B.3.7 Resumo de especifi cadores de formato - 850 B.4 Diferenças entre especifi cadores de formato das famílias printf e scanf - 854 Apêndice C - Especifi cadores de formato de datas e horas - .855 Apêndice D - Erros comuns de programação em C - 871 D.1 Introdução - 873 D.2 Operadores - 873 D.2.1 Uso de atribuição em vez de igualdade ou vice-versa - 873 D.2.2 Uso Incorreto de regras de precedência e associatividade - 874 D.2.3 Uso de && em vez de || ou vice-versa - 875 D.2.4 Uso de & em vez de && - 876 D.2.5 Uso de | em vez de || - 876 D.2.6 Operadores lógicos de C não são comutativos - 876 D.2.7 Separação indevida de símbolos - 877 D.2.8 Suposições sobre ordem de avaliação de operandos - 877 D.3 Estruturas de controle - 878 D.3.1 Uso indevido de ponto e vírgula - 878 D.3.2 Instrução switch-case sem break - 879 D.3.3 Instrução do-while confundida com REPEAT-UNTIL - 880 D.3.4 else que não corresponde ao if desejado - 881 D.4 Defi nições incorretas de funções - 882 D.4.1 Recursão sem fi m - 882 D.4.2 Retorno de zumbis - 883 D.4.3 Chamadas sem o devido retorno - 886 D.4.4 Desconhecimento de regras de escopo - 887 D.4.5 Vazamento de memória - 888 D.4.6 Uso incorreto de variáveis locais de duração fi xa - 888 D.5 Entrada e saída - 891 D.5.1 Uso incorreto de scanf() - 891 D.5.2 Uso incorreto de printf() - 893 D.5.3 String de formatação incorreto - 894 D.5.4 Lixo no buffer associado à entrada padrão - 896 D.5.5 Não existe uso correto para gets() - 897 D.5.6 Uso incorreto de EOF - 897 D.5.7 Uso incorreto de feof() - 898 D.5.8 Prompts que o usuário não lê - 899 D.6 Chamadas incorretas de funções - 899 D.6.1 Suposições sobre ordem de avaliação de parâmetros - 899 D.6.2 Argumentos incorretos - 900 D.6.3 Omissão de teste de condição de exceção - 901 D.6.4 Omissão de teste em alocação dinâmica de memória - 904 D.6.5 Implementações incorretas da biblioteca padrão - 905 D.6.6 Chamadas de funções sem parâmetros - 905 D.6.7 Alusões e ponteiros para funções sem protótipos - 906 D.7 Pré-processador - 907 D.7.1 Arquivos de programa não devem ser incluídos - 907 D.7.2 Inclusão múltipla de arquivos - 907 D.7.3 Inclusão recursiva de arquivos - 907 D.7.4 Defi nições de tipos usando #defi ne - 908 D.7.5 Defi nições incorretas de macros - 908 D.7.6 Chamadas incorretas de macros - 908 D.8 Ponteiros - 909 D.8.1 Ponteiros não iniciados - 909 D.8.2 Ponteiros órfãos - 909 D.8.3 Ponteiro incrementado passa a apontar para outro endereço - 911 D.8.4 Indireção de ponteiro nulo - 915 D.9 Arrays e strings - 916 D.9.1 Desrespeito aos limites de arrays - 916 D.9.2 Strings constantes devem ser considerados constantes - 919 D.9.3 Comparação incorreta de strings - 919 D.9.4 Strings constantes sem acessibilidade - 920 D.9.5 Uso de sizeof em vez de strlen() - 921 D.9.6 Funções que não limitam o número de caracteres escritos - 921 D.9.7 Funções que nem sempre produzem strings - 922 D.9.8 Strings constantes versus caracteres constantes - 923 D.9.9 Alocação de espaço insufi ciente para conter um string - 924 D.10 Alocação dinâmica de memória - 924 D.10.1 Zumbis também assombram o heap - 924 D.10.2 Uso incorreto de free() - 927 D.10.3 Lista encadeada não é array - 928 D.11 Operações inteiras - 928 D.11.1 Overfl ow - 928 D.11.2 Erro de sinal - 930 D.12 Operações de ponto fl utuante - 933 D.12.1 Arredondamentos - 933 D.12.2 Comparações - 935 D.12.3 Overfl ow e underfl ow - 937 D.13 Comentários - 938 D.13.1 Comentários não terminados - 938 D.13.2 Comentários mal posicionados - 938 D.13.3 Comentários aninhados - 939 D.14 Erros de portabilidade - 939 D.14.1 void main() - 940 D.14.2 ffl ush(stdin) - 940 D.14.3 conio.h - 940 D.15 Outros erros comuns - 941 D.15.1 Uso de variáveis não iniciadas - 941 D.15.2 Conversões inadequadas de tipos - 942 D.15.3 Ambiguidades em defi nições e alusões de variáveis globais - 943 D.15.4 Nomes de identifi cadores trocados - 943 D.15.5 Colisões de identifi cadores - 944
    Bibliografia – 945

    Informações Técnicas

    Nº de páginas:992
    Origem:Nacional
    Editora:Editora Ciência Moderna
    Idioma:Português
    Edição:1ª Edição
    Ano:2480
    ISBN:9788573939316
    Encadernação:Brochura
    Autor:ULYSSES DE OLIVEIRA
  • Informações

Avaliação técnica sobre o livro

Olá! Seja Bem Vindo (a)!

Eu sou o Moderninho , o Mascote da Ciência Moderna Online!
Além de bonito, o novo site tem Minhas Dicas :) #ficaadica

A 1ª Dica é -> Deixe aqui seu contato para receber nossas
NOVIDADES, PROMOÇÕES E CUPONS DE DESCONTOS ;)

Navegue SEM Moderação!