Olá, seja bem-vindo de volta.
Eu quero continuar nossa discussão em algumas das funções na
biblioteca c padrão.
Estas são muitas das funções nós já passamos na aula, mas eu
queria lembrar a vocês.
Portanto, há muitos importantes várias funções da biblioteca
padrão c que já temos abordado ao longo do curso
com todos os nossos exemplos e todos as coisas que aprendemos.
Conversamos muito sobre funções de string.
E alguns deles são muito fáceis de usar e alguns vamos usar muito, então
você deve estar familiarizado com eles.
Para usar qualquer uma dessas funções, você precisa incluir a string do
arquivo de cabeçalho. h, tudo é definido em string. h.
Nós conversamos sobre str cat.
Str cat concatena dois strings, dois parâmetros necessários, dois
ponteiros de caracteres.
E vai retornar um personagem ponteiro concatenado ao outro.
Portanto, colocar um caractere nulo no final da string final,
a função retorna s1.
Str char isto pesquisa por um string que contém um caractere.
Isso retornará um estrela do personagem também.
É uma boa forma de pesquisar.
Nós conversamos bastante sobre isso um pouco com gato de barbante.
Str compare está indo para comparar duas strings.
Esta é a maneira padrão de fazer isso.
São necessários dois indicadores e ele retorna um inteiro.
Tínhamos alguns exemplos disso onde basicamente se você retornar zero, as
duas strings são iguais.
Se retornarmos maior ou menor do que, se
você virar maior do que zero, isso significa que s1 é geralmente maior em tamanho alfabético.
Então, se você passar em uma string que continha ae então a segunda
string é b, ela retornaria maior que zero porque ou se tornaria menor que zero porque a
é menor que b.
Se você passou em b como o primeiro parâmetro ec é o segundo
parâmetro, algum tipo de string começando com b ou c, ele
retornará maior que zero.
Então você tem que entender esses valores de retorno.
Isso é o que é importante para comparar.
Str copy.
É assim que você pode atribuir uma string para outra string.
Lembre-se, strings, ponteiros e matrizes de caracteres, você não
pode atribuir a string diretamente usando o operador de atribuição.
Para inteiros e flutuantes, você pode apenas use os operadores iguais.
Não posso fazer isso com cordas.
Então você tem que usar str copy quando você deseja atribuir uma string a um ponteiro, ponteiro
de caractere ou matriz de caracteres.
Você pode inicializar um caractere array literal string constante entre
aspas duplas.
Mas depois disso, depois do inicialização se
quiser alterá-lo, você terá que usar str copy
Comprimento do Str.
Outra função importante para obter o comprimento de uma corda.
Isso retorna um tamanho t que é o inteiro representando o comprimento.
Todas essas funções de string recebe ponteiros ou matrizes de
caracteres como parâmetros.
Então, precisamos entender como isso funciona também.
Outra função de string strncat.
Lembre-se de todas as funções que em vez disso adicionar o final são um pouco
mais seguros porque você não tem estouros de buffer.
Então, em strncat o terceiro parâmetro é adicionado e isso dirá copiar
ou concatenar tantos parâmetros.
Normalmente, o terceiro parâmetro é vai ser o tamanho do primeiro
parâmetro porque você não quer para copiar qualquer coisa maior do que isso.
Essas funções devem ser utilizado sobre
as outras funções de string porque são seguro para estouro de buffer.
Strn compare.
Novamente, você vai comparar certas número de caracteres para s1 e s2.
Strn copy, aqui o terceiro parâmetro end seria provavelmente o comprimento de str
ou o tamanho de s1.
Porque você vai copiar s2 e s1, mas você não deseja copiar mais
bytes do que s1 pode conter ou armazenar.
Str char.
Aqui é onde você pode pesquisar a string para a última ocorrência
de um caractere.
Então você percebe que isso parece muito familiar ou semelhante ao str char, há
um r extra aqui.
Então, em vez de retornar o primeiro ocorrência, isso retornará
a última ocorrência, mas você usou da mesma forma que o outro.
Str str.
Isso vai procurar uma string.
Portanto, esta é uma função de pesquisa onde você está tentando encontrar
essencialmente uma substring dentro de uma string.
Novamente, pegando duas dicas de caracteres.
Strtok.
Esta era a função importante onde você pode, isso ajuda a analisar dados.
Strtok leva o delimitador como o segundo parâmetro e ele
irá procurar por aquele caractere delimitador em qualquer lugar dentro da corda.
Muitas vezes você usa algo como um espaço ou uma alimentação de linha para s2.
Isso vai quebrar a corda em vários tokens diferentes.
Novamente, use quando quiser para analisar dados normalmente.
Toda vez que você tem que ligar para strtok várias vezes
até que você com null se ainda estiver procurando o próximo tok que você deseja encontrar
em uma determinada string.
Também tivemos alguns importantes funções de personagem.
Todas as funções de personagem são definidos em ctype. h.
As funções de personagem que nós usado onde as funções is para verificar se
um caractere é ou não um alfanumérico ou se está em branco
ou se é um controle caractere um dígito, havia uma
série de funções diferentes lá.
Portanto, lembre-se desse ctipo. h permite para verificarmos esses personagens diferentes
o que eles realmente são.
Também tínhamos algumas funções de conversão em ctype. h, principalmente nossos dois superiores.
Dois mais baixos leva um personagem e vai dar
o equivalente em minúsculas a c.
Lembre-se de que tivemos um desafio onde convertemos letras minúsculas em maiúsculas.
Nesse desafio, realmente adicionamos à nossa tabela ASCII, mas poderíamos
ter chamado dois superiores no caractere.
Poderíamos ter configurado dois em torno do caractere,
desde que incluamos ctype. he isso seria convertido uma minúscula para uma maiúscula.
Tínhamos muito IO funções, entrada e saída.
Nos concentramos na leitura e gravando arquivos, mas também
lemos a entrada do teclado e geramos dados para o console ou a tela.
Então, para usar o IO mais comum funções, está tudo
no standardio. h arquivo de cabeçalho.
Este arquivo contém declarações para o diferentes funções de
IO, bem como definições para constantes, como fim do arquivo, padrão nulo na saída
padrão e erro padrão.
Todos esses são valores constantes.
Também há uma constante para o arquivo de estrutura de arquivo.
Fclose é uma função que nós usado para fechar nossos streams.
Fecha o arquivo identificado pelo ponteiro do arquivo.
E ele retorna zero se para feche um sucesso, caso contrário eof.
Feof, essa é uma função que não usar explicitamente, mas isso irá verificar se você está ou não
no final do arquivo em oposição à comparação com uma constante,
você pode fazer um feof.
Fflush.
Esta é uma função que irá liberar todos os dados do buffer interno.
Às vezes você precisa fazer isso quando você quer começar de novo, mas basicamente está
apenas se livrando de qualquer coisa dentro de um buffer.
Também temos fgetc.
Esta é a leitura individual caracteres, leva um ponteiro de arquivo.
Temos a posição fget.
Este é um dos funções de posição.
Ele obtém a posição atual do arquivo para o arquivo
associado ao ponteiro do arquivo e o armazena em um tipo de posição f, que é definido
no padrão io. h também.
Tínhamos nossos fgets.
Isso era leitura em strings.
Muito bom, lê personagens do arquivo indicado, mas
número de caracteres.
Fopen irá abrir um arquivo em um modo específico: ler, escrever ou
anexar usando um ponteiro de arquivo.
Fprintf irá gravar dados e formatado saída, e é semelhante à função printf, que
tomará o argumentos especificados pelo ponteiro e, em seguida, usam
dados formatados para escrever.
Então você pode escrever inteiros, duplos usando especificadores de formato e, em seguida, variáveis
que você deseja escrever.
Também tínhamos fputc, que escrever caracteres em um arquivo.
Fputs irá gravar uma string em um arquivo.
Leva um buffer e um arquivo indica o que você deseja escrever e
o arquivo no qual deseja escrever.
O Fscanf lerá os dados de um arquivo.
Ele pegará a entrada e ele usará o mesmo tipo de formato
que o scanf terá especificadores e variáveis de formato.
Mas isso é bom, você quer ler em dados separados por espaço.
Você pode usar fscanf e pode especificar o tipo, então leia-o diretamente
em ints, doubles, tipos de dados específicos.
Fseek vai mudar a posição de para onde você está apontando em um arquivo.
Então você não tem que começar no início ou fim de um arquivo.
Você pode ir diretamente para no meio do arquivo.
Depois de verificar essa posição, seu próxima leitura ou gravação usará essa
posição para escrever ou ler.
A posição Fset é semelhante a fseek.
Ele define a posição atual do
arquivo no arquivo associado ao ponteiro do arquivo para o valor apontado pela posição f, fpos.
Nós também nos divertimos.
Ftell vai voltar como muitos bytes desde o início você
se baseia no ponteiro do arquivo.
Portanto, é o local externo relativo em bytes da posição atual,
nem sempre o início, mas a posição atual.
Usamos o ftell em um de nossos desafios para ler um arquivo ao contrário.
Printf.
Nós usamos isso provavelmente mais do que qualquer outra função.
Isso estava exibindo saída para a tela.
Ele usa especificadores de formato e um número variável
de argumentos separados por vírgulas.
Printf é muito útil para depuração e exibindo a saída, o que você
faz bastante dentro de um programa c.
Remover.
Remover é uma função onde você pode excluir um arquivo.
É necessário um nome de arquivo.
O ponteiro do arquivo deve ser fechado.
Você não pode deixá-lo aberto.
Renomear irá renomear um arquivo para o outro arquivo também deve ser fechado o
arquivo não pode ser aberto.
Scanf irá ler a entrada de geralmente é o padrão do teclado.
Você pode alterá-lo para ler a entrada de outras transmissões, se desejar.
Também tínhamos funções de conversão que discutimos ao longo do curso.
A maioria dessas funções estão no lib padrão. arquivo h, arquivo de cabeçalho.
Tínhamos a função atof.
Isso é converter uma string em um flutuar, e você o passa em uma corda.
Temos funções atoi.
Esta conversão de um string para um inteiro.
Atol está convertendo uma string em um longo, e você passa a string e
ela retorna o retorno método para o qual você está convertendo.
São muito úteis.
Você costuma usar isso para converter strings para algum tipo de tipo de número.
O Atoll o converte em um int longo longo.
Mas certifique-se de olhar para o arquivo de cabeçalho lib padrão
para mais funções de conversão.
Tínhamos nossas funções de memória, nossa funções de alocação de memória dinâmica.
Isso é muito importante.
A alocação de memória dinâmica é importante porque é muito mais eficiente.
Você só utiliza o memória que você precisa.
Você não cria dados estáticos.
Isso permite que seu programa para ser muito mais flexível.
Todas essas funções são incluído dentro da biblioteca padrão. h.
Falamos sobre calloc.
Calloc é uma ótima função onde você pode alocar um certo tamanho
e isso será multiplicado por n.
Então você pode especificar o tipo de dados também e vai multiplicá-lo.
A coisa boa sobre calloc, ele inicializa seus dados.
Portanto, é realmente preferível ao malloc.
Temos nossa função gratuita o que apagará a memória.
Toda essa memória está indo a ser criado no heap.
Então estaremos muito por perto mais, mas depende de você, como
programador, gerenciar essa memória.
Você sempre quer libertar seu memória depois de usá-lo porque
a memória é um escasso recurso em outros programas e queremos usar
essa memória.
Então, sempre ligue grátis depois você faz um calloc ou malloc.
Malloc é um mais simples versão de criação de memória.
Na verdade não inicializar todos os dados.
Leva apenas o tamanho como parâmetro.
Ele retorna uma estrela vazia.
Então você sempre precisa lançá-lo assim como com calloc para qualquer tipo de memória
para a qual você esteja apontando.
Se você está apontando para int ou flutuar, você tem que lançar isso.
Também temos realocar.
Realloc é incrível porque você pode realmente adiciona à memória existente.
E assim, desta forma, o seu a memória pode ser dinâmica.
Você pode torná-lo maior se você deseja armazenar mais dados.
Realloc pega um ponteiro no tamanho.
Vai manter todos os dados que a memória anterior estava apontando.
Irá alocar nova memória mas vai mantê-lo, para que você
possa adicionar alguma memória existente.
Muito, muito útil.
Na criação de memória dinamicamente é será realmente útil em todos os seus programas, especialmente
porque ponteiros são muito, muito importantes, eles são
muito mais eficientes.
Mas certifique-se de entender tudo esses arquivos de cabeçalho que usamos ao
longo do curso.
Estes são os principais que são muito, muito importantes.
Vamos falar sobre alguns novos no próximas duas palestras que não pudemos
discutir tanto quanto eu gostava.
Mas estes são alguns importantes também.
Obrigada.