Olá, seja bem-vindo de volta.
Nesta palestra, eu quero falar sobre como gravar em um arquivo.
Vamos nos concentrar ao escrever em um arquivo de texto.
O que vamos aprender sobre é como você pode escrever caracteres, como você
pode escrever strings e como você pode escrever saída formatada.
As três maneiras também fomos capazes de ler.
Portanto, há três funções que você realmente precisa
estar familiarizado para fazer essas coisas.
A operação de gravação mais simples é fornecido na função fputc.
Então, assim como havia um fgetc para ler personagens, existe
um fputc para escrever personagens.
Isso vai escrever um single caractere para um arquivo de texto, fputc.
Não tão eficiente quanto escrever strings, mas às vezes necessário.
Leva um inteiro como seu primeiro parâmetro e um ponteiro de arquivo como
o segundo parâmetro e retorna um inteiro.
A função escreve o caractere
especificado pelo primeiro argumento do arquivo identificado pelo segundo argumento.
Portanto, o ponteiro do arquivo representa o que sempre faz: o arquivo no
qual você deseja gravar.
E então o personagem você realmente deseja gravar
é o seu primeiro parâmetro.
O personagem retornado é o que foi escrito se bem-sucedido.
Lembre-se, se retornar eof, significa que foi um fracasso.
Se retornar qualquer coisa diferente de o eof, significa que foi sucesso.
Na prática, os personagens são geralmente não é gravado em um
arquivo físico, um por um.
É extremamente ineficiente.
A função putc é o equivalente ao fputc.
Você também vê isso usado com frequência.
Requer os mesmos argumentos e o tipo de retorno é o mesmo.
A diferença entre eles é que o putc pode ser implementado
na biblioteca padrão como uma macro.
Considerando que, fputc é uma função assim.
Não há muitas diferenças, mas não aprendemos sobre macros.
Então, vamos ficar com fputc para escrever caracteres únicos.
E por exemplo, é bem direto.
Primeira coisa que você tem que fazer, como sempre é que você tem que abrir o arquivo.
Antes disso, declaramos nosso variáveis, declaramos um ponteiro de arquivo, deve
ser inicializado como nulo.
E então nosso inteiro que nós vamos escrever.
Quando abrirmos nosso arquivo, você observe que fazemos w ou w plus.
W significa que vamos escrever apenas, você não pode ler.
W plus significa que você pode escrever e ler.
Nesse caso, podemos escrever e ler.
Aqui temos um loop for.
Estamos passando por todos os caracteres começando em 33 a 100.
Quando estes são inteiros, o que isso significa que o caractere
é representado na tabela ASCII.
Então, se você escrever um personagem, por exemplo 59, você teria que procurar na
tabela ASCII para ver o que representa, mas seria um personagem real.
Aqui estamos apenas escrevendo O ASCII tem valores de 33 a 100,
e estamos dizendo fputc char fp.
E você pode usar a conversão funções se você
quiser criar valores ASCII e inteiros, você pode apenas usar um atoi.
Então, se você quiser escrever o caractere c, você poderia dizer fputc atoi e,
em seguida, colocar c entre aspas simples.
Isso também seria bom porque converteria o ASCII em
um inteiro e o escreveria.
Mas o primeiro argumento é um inteiro, então você tem que escrever um inteiro.
O segundo argumento é o nosso arquivo ponteiro, muito simples aí.
E então a última coisa que temos que fazer é fechar esse arquivo.
Provavelmente também queremos defina o ponteiro fp como nulo.
Mas, novamente, é necessário um número inteiro.
Portanto, tome cuidado.
Está sempre representado na tabela ASCII.
Mas você pode converter o real caracteres dois inteiros usando atoi.
Que tal escrever uma string para um arquivo de
texto, muito mais útil, mais eficiente.
É aqui que você usa a função fputs.
Isso permitirá que você escrever em qualquer arquivo ou fluxo.
É semelhante ao fgets, recebe uma string de carga constante que você deseja escrever
como o primeiro parâmetro para o ponteiro.
E leva um, como nosso segundo parâmetro, o ponteiro do arquivo, em qual
arquivo você deseja gravar.
E então ele retorna um int.
Portanto, o primeiro argumento é o nosso aponta a seqüência de caracteres
que você deseja escrever.
O segundo argumento é o arquivo o próprio ponteiro, e a função
irá escrever caracteres de uma string até atingir o terminador nulo.
Não escreve o nulo caractere terminador para o arquivo, então
você deve escrevê-lo explicitamente.
Isso pode complicar as coisas porque quando você lê
de volta os dados, pode ter comprimento variável não terminará no terminador nulo.
Então você tem que-- Esperando escrever
um linha de texto que possui um novo caractere de
linha no final.
Portanto, certifique-se de que você está familiarizado
com o terminador nulo e gravá-lo explicitamente usando fputc, um único caractere ou escrevê-lo e basicamente adicionará o
caractere de nova linha no final, depois de escrevê-lo.
Então, está esperando esse novo personagem de linha para estar lá.
Você tem que especificar isso explicitamente.
Isso é muito simples em termos de código.
Você acabou de dizer fopen.
Fputs, escreve uma string no nova linha usando o ponteiro do arquivo.
E então outro fputs aqui escreve outra corda e então você fecha.
Então, neste caso, escrevemos dois strings, duas linhas de código na verdade ou duas linhas
no arquivo e nós abriu o arquivo com w plus que serve
para ler e escrever.
Os exemplos de escrita são bem direto.
Você acabou de chamar algumas funções, fopen e, em seguida, fputs e, em seguida, fclose.
Agora, para escrever saída formatada, vamos usar fprintf.
Novamente, você notará que com o scanf para ler e
inserir e o printf, basta adicionar isso fprefix antes da função e
você está escrevendo a saída formatada.
Então, para escrever saída formatada com fprintf, ele retorna um inteiro.
É necessário um fluxo de arquivo como o
primeiro parâmetro e, em seguida, os especificadores de formato são seguidos por vírgulas com número
variável de argumentos para cada formato especificador apenas como printf realmente.
O primeiro argumento para a função é o ponteiro para o objeto de arquivo.
E então o segundo argumento é esse número variável de argumentos.
É uma string c que contém um ou mais dos seguintes
itens, caractere de espaço em branco, um espaço não em branco caractere, especificadores de formato.
E de novo, é muito semelhante ao printf.
Mas, na verdade, você está gravando em um arquivo.
Então você pode escrever formatado saída para um arquivo.
Se for bem-sucedido, ele retornará o número de caracteres escritos.
Caso contrário, ele vai retorna um número negativo se
não for bem sucedido.
Parece algo assim.
Você inclui o cabeçalho IO padrão.
Você cria seu ponteiro de arquivo.
Você então usa o seu ponteiro de arquivo para abrir algum arquivo de texto, use-o para
w plus para ler e escrever e então você apenas diz fprintf.
Nesse caso, estamos dizendo fprintf.
Estamos especificando o arquivo ponteiro e, em seguida, estamos especificando quatro strings
separadas por um espaço e um por cento d.
E estamos escrevendo Olá, meu número é 555.
Portanto, o arquivo realmente terá os dados formatados quando você os escreve.
Vejamos isso em blocos de código e veja o que parece.
Portanto, não há muito código aqui.
Temos apenas algumas linhas de código.
Na linha quatro, estamos criando nosso ponteiro de arquivo.
E novamente, nós queremos inicialize isso para nulo.
Então, na linha seis, chamamos fopen.
E dizemos abrir arquivo. txt, para que Arquivo. txt deve existir e onde
o arquivo de origem c está sendo executado ou se você estiver executando
o programa manualmente onde quer que o executável esteja.
Vamos abrir para ler e escrever.
Depois de abri-lo, queremos ter certeza de que o ponteiro
do arquivo não é nulo.
Portanto, queremos dizer não fp.
Se não for nulo, então nós pode começar a gravar dados.
E, neste caso, na linha 9, estamos vai escrever dados formatados.
Então, o que vamos escrever é vamos escrever uma corda, duas cordas,
três cordas, quatro string e, em seguida, um inteiro.
E então os próximos parâmetros são apenas strings separadas por
vírgulas, bem como nosso inteiro no final.
Eu só tenho que consertar essas duplas aspas porque não funciona direito, então 555
está bem no final aí.
E vai então fechar o arquivo e devolvê-lo.
Então, vamos tentar construir isso e execute-o e não veremos nenhuma saída
real para executar
Vamos ter que olhar a aparência do arquivo.
Então, quando compilamos este arquivo, você deseja certificar-se de que
sua instrução if diga diferente de nulo.
Então, quando executamos isso, novamente, você não verá nenhuma
saída, ele apenas será executado.
E então, quando você olha para o arquivo dentro do diretório, você verá
que ele contém a entrada em um único linha, olá, meu nome é fpp ou em 555.
Então é assim que você pode escrever saída formatada.
É muito simples.
Você pode adicionar novos linhas se você quisesse.
Ele adicionará uma nova linha no final, mas você pode colocar a barra invertida n aqui.
Funciona exatamente como printf.
Novamente, temos que executá-lo, nós realmente não vejo nenhuma saída interessante até que você
olhe para o arquivo.
E, nesse caso, você vê um feed de linha.
Então, gravar a saída em um arquivo é bastante simples.
Você quer escrever personagens, você
do fputc, você deseja escrever strings fputs, saída formatada fprintf.
Teremos alguns desafios que ajudá-lo a se familiarizar
ainda mais com isso, mas muito fácil de grava a saída em um arquivo de texto.
Obrigada.