Please enable JavaScript.
Coggle requires JavaScript to display documents.
Manipulação de Dados (Os sistemas de arquivos (Um sistema de arquivos é…
Manipulação de Dados
Os sistemas de arquivos
Um sistema de arquivos é algo semelhante a um protocolo, composto por um conjunto de regras e características que permite o gerenciamento de dados lógicos em ambientes físicos
Sistemas de arquivos diferentes possuem formas de organizar a informação diferente, porém algumas características que a maioria deles possuem em comum são:
Quando formatamos um disco, o sistemas de arquivos coloca no cabeçalho do disco suas informações e a partir dai os arquivos novos irão seguir a sua organização (isso não quer dizer necessariamente que os dados anteriores a formatação foram perdidos para sempre)
Essas informações são relacionadas ao tamanho dos blocos utilizados para leitura e gravação, além dos dados adicionais relativos ao sistema operacional como dono do arquivo, grupo, permissões e etc
O padrão POSIX define as funções stat() e fstat() que são utilizadas para preencher ou coletar essas informações do arquivo relativas ao sistema operacional, essas informações são gravadas em struct stat
Lembrando que o nome do arquivo e sua hierarquia não são gravados nessa struct, ficam em outro lugar
Expressões Regulares
São strings onde alguns caracteres possuem um significado especial e são utilizadas para encontrar texto em outra string
Existem dois tipos de expressões regulares, as estendidas (definidas pelo padrão POSIX 1003.2) e as básicas, muito antigas, usados antes que as estendidas fossem padronizadas
A lista de expressões estendidas é enorme, então dê uma olhada no livro para consultar, ok? :)
O libc logicamente já possui suporte para tanto as estendidas quanto para as básicas, usamos a função regcomp() para compilar uma expressão regular e armazenar suas informações em uma struct re_pattern_buffer, já a função regexec() executa a expressão regular já compilada, se a achar, retorna 0, se não retorna REG_NOMATCH
Podemos usar as expressões regulares com os parsers tranquilamente, usando o conceito de substring, com elas podemos selecionar uma parte de uma string e obter seus valores como variáveis :D
Unicode
É um mapa de caractere universal, ele foi desenvolvido para acabar com a abundância de mapas de caracteres usados para escrever texto em diferentes línguas
-
A organização do vetor é uma questão de codificação, os tipos de codificação Unicode são conhecidos como UTF-[números de bits utilizados para um único símbolo] (Normalmente utilizamos o UTF-8 ou o UTF-16)
O libc suporta o Unicode em todas as suas funções relacionadas a strings, a única coisa que muda é o nome dos tipos e das função para suportar o Unicode, o tipo char vira wchar, funções como printf() e fprint() vira wprintf() e fwprintf(), tu pode ver a relação completa no arquivo wchar.h()
É importante tu migrar para os tipos e funções compatíveis com o Unicode, pois atualmente ele já é padrão, as codificações anteriores já estão obsoletas, fique ligado!!
Os arquivos stdin, stdout e stderr
São arquivos especiais que representam maneiras diferentes para chamada de sistema e chamadas pela libc
São representados também pelos números 0, 1 e 2 respectivamente
-
stdin simboliza a entrada padrão, já stdout simboliza a saída padrão, e stderr simboliza a saída de erro padrão
-
-
-
Função perror()
A maioria das funções padrão emitem erros, quando isso ocorrem, elas armazenam o código do erro na variável errno (essa variável normalmente fica escondida, mas tu pode chama-la com um include da biblioteca errno.h)
A função perror() é usada para imprimir uma descrição do erro baseado na variável errno, ele recebe como argumento uma string com a descrição do erro
-
-
-