Olá e bem-vindo.
Nesta palestra, eu quero fornecer uma
solução para nosso desafio anterior, que é converter um arquivo que contém caracteres
minúsculos para um arquivo que contém caracteres maiúsculos.
Nesse ínterim, vamos criar um arquivo temporário, então vamos precisar
renomear e deletar e assim por diante.
E o resultado final para o programa vai ser o arquivo.
Vamos ler no arquivo que já foi convertido para letras maiúsculas.
Então, vamos trazer o código blocos, crie um projeto.
Vou dizer novo projeto, console aplicativo, vá
c e isso será chamado de conversão de arquivo em letras minúsculas.
Nós apenas vamos este seja o nosso principal. c.
Queremos ter certeza de que criamos nosso cabeçalho IO
padrão porque vamos ler e escrever e usando fopen e assim por diante.
Então o que eu sempre gosto de fazer é crie o arquivo logo no início.
Então aqui vou definir uma constante para meu nome de arquivo.
Vamos chamar isso de definir.
E desta vez chamaremos de teste. texto.
E então vamos apenas dizer o nome do arquivo está em letras maiúsculas.
Eu gosto de fazer essa convenção.
E então vou realmente crie o nome do arquivo em nosso projeto.
Então, novamente, eu armazeno meus arquivos dentro do meu diretório de downloads.
É onde todos os meus projetos são armazenados.
E neste caso, temos um projeto chamado de conversão de arquivo em minúsculas.
Vou consertar no mesmo diretório,
para que eu possa executá-lo a partir do IDE.
Vou criar um novo arquivo de texto.
Vou nomear este teste. texto.
E eu vou trazer isso à tona, e vou apenas
colocar alguns caracteres em letras maiúsculas e minúsculas.
Então, digamos que Jason está testando. OK, seja qual for o teste, alguns são maiúsculos, outros
são minúsculos no resultado
final, estarão sempre em letras maiúsculas, outro desafio.
Aqui vamos nós.
Então, o resultado final disso os arquivos serão testados. arquivo txt com todas
essas letras maiúsculas.
Mas vamos salvá-lo com alguns maiúsculos e alguns minúsculos.
Agora temos nosso arquivo criado agora podemos realmente
ler e escrever.
Vou criar alguns arquivos ponteiros com arquivo em maiúsculas,
e direi estrela fp.
Vou inicializar isso para nulo e,
em seguida, criarei outro ponteiro de arquivo estrela fp1 e também igual a nulo.
Novamente eu preciso de dois aqui porque
Lerei e gravarei em arquivos separados, essencialmente um arquivo temporário.
Também vou criar um personagem variável, que será o caractere
que lemos usando fgetc.
E vou deixar isso igual para null também ou melhor ainda,
vou deixar a string vazia.
A primeira coisa que preciso fazer é eu precisa abrir
o arquivo em modo de leitura para o primeiro arquivo que é fp e o segundo arquivo será um arquivo temporário.
Portanto, vou dizer que fp é igual a fopen.
Vou usar o teste de nome de arquivo. texto.
Então, o nome do arquivo, e eu vou para abrir somente para leitura.
E então eu quero fazer certeza de que este é um nulo.
Vou dizer se fp é igual a nulo, então
irei retornar apenas 1 negativo.
Em seguida, quero criar meu arquivo temporário.
Então aqui estou indo para crie um arquivo temporário.
E neste caso eu vou abra um arquivo para escrita.
Vou usar meu ponteiro fp1, e vou dizer fopen.
Este eu só vou ligar temp. texto, vai criá-lo se
não existir.
E então vou colocar o w porque
vou escrever apenas para escrever.
De novo, o que eu quero fazer aqui é que eu quero
ter certeza de que fp1 não é igual a nulo.
Vou dizer fp1.
Se for igual a nulo, então sou apenas vai retornar um negativo.
Agora abri dois arquivos, um para ler, um para escrever.
A gravação é para o arquivo temporário.
E o que eu quero fazer a seguir é eu quero para começar a ler a partir do arquivo e
depois escrever todas as letras maiúsculas.
Então, eu quero adicionar um loop while para ler
e eu quero dizer enquanto o tipo de dados de caractere ch é igual a fgetc,
e quero ler meu teste. texto, então fp e eu quero fazer isso até que eu não chegue ao fim do arquivo.
Portanto, posso dizer que não é igual a eof.
Eof é uma constante especial.
Dentro do meu loop while, eu quero verifique se algum dos caracteres que estou lendo
está em minúsculas.
Então, eu quero dizer se é um ch mais baixo, se eu encontrar
um caractere minúsculo, então eu
só quero definir o caractere em maiúsculas.
Portanto, posso dizer que ch é igual a ch menos 32.
Isso irá converter o personagem para um caractere maiúsculo.
Depois de convertê-lo, ou é convertido ou não, é maiúsculo ou não, então
eu quero gravá-lo no meu arquivo temporário.
Portanto, aqui posso dizer fputc.
E posso apenas dizer meu personagem que eu quero escrever e o ponteiro do
arquivo que é fp1.
Então, toda vez que leio um personagem, Estou escrevendo no meu arquivo temporário.
E se estiver em minúsculas, estou convertendo em maiúsculas e depois escrevê-lo.
Então, o final deste loop while é Eu tenho um arquivo
temporário que contém todos os caracteres do teste. texto com letras maiúsculas.
E então eu terminei com ambos esses arquivos lendo e gravando.
Portanto, posso dizer fclose fp e fclose fp1.
Eu quero agora renomear meu temporário arquivo para o meu teste. arquivo de texto.
Então, aqui posso apenas dizer renomear, chame a função
renomear, e posso dizer temp. texto é isso que eu quero renomear.
E aquele que eu quero renomear é teste. texto ou usar minha constante que
é o nome do arquivo.
Ainda tenho meu arquivo temporário criado.
Portanto, desejo excluir o arquivo temporário.
Portanto, remova o arquivo temporário.
Aqui posso chamar o remove função e passá-lo em temp. texto.
E então a última coisa
que eu quero a fazer é imprimir o conteúdo do meu teste. arquivo de texto, que será convertido em maiúsculas.
Em vez de fechar fp porque que está apontando para testar. texto, eu não poderia fechá-lo agora,
eu poderia apenas feche fp1 porque fp1
era o temp. texto e esse é o um que estou renomeando e removendo.
Na verdade eu tenho que fechar porque eu mudei o nome dele.
Vou ter que fechar o fp.
Agora, na linha 43, quero reabrir fp porque agora quero ler o conteúdo
e imprimi-lo.
Posso dizer o nome do arquivo fp fopen ou desculpe o nome do arquivo e eu quero lê-lo.
Então, vou apenas dizer r.
Mais uma vez, quero fazer certeza de que não é nulo.
E se for igual a null, quero voltar.
E eu só quero dizer retornar um negativo.
Eu poderia imprimir algumas informações.
E então aqui eu quero ler os dados e apenas imprimi-los.
Então, posso fazer outro loop while.
Não imprimimos nada ainda, então deveríamos ser
capazes de apenas dizer enquanto ch é igual a fgetc fp e não igual a eof.
E o que queremos fazer é só quero imprimir o ch.
Então, podemos dizer por cento c ch, e então terminamos.
E, novamente, no final, nós queremos fechar o último arquivo que é fp e
queremos definir fp igual para nulo e fp1 igual a nulo.
Então, vamos garantir que isso seja compilado.
Então, estamos prontos para ir.
Somos capazes de compilar, colocar um ponto e vírgula na linha de 54 eu tinha dois pontos aí.
Então, se voltarmos por meio desse código, criamos
alguns ponteiros de arquivo.
Temos nossa constante.
Abrimos um arquivo.
Nós lemos isso.
E enquanto estamos lendo, nós gravá-lo em um arquivo temporário.
Em seguida, excluímos o arquivo temporário.
Temos que deletar tanto o arquivo estamos lendo e o arquivo temporário porque
temos que renomear e remover.
Não podemos renomear ou remover em um função ou em um arquivo que já está aberto, por isso
temos que fechá-los.
Então, nós reabrimos e imprimimos os dados.
Então, nós rodamos isso.
Devemos ver a saída com todas as informações do personagem.
Então, quando executamos este programa, o que veremos é que imprime tudo em letras maiúsculas.
Então, novamente, nós o executamos, ele imprime tudo em letras maiúsculas.
Se olharmos para o arquivo em disco, podemos olhar para o teste. texto, e vamos notar que agora
contém tudo em maiúsculas.
Novamente, se quiséssemos mudar isso e mude mais algumas letras minúsculas.
Então, nós salvamos aqui está em minúsculas executamos o programa e
ele converte tudo em maiúsculas.
Novamente, se executarmos isso, imprima-o em maiúsculas.
Nós olhamos para ele e está tudo em maiúsculas.
Então, um pequeno programa bom que irá converter
caracteres minúsculos em maiúsculas.
Muito simples, somos usando nossas funções importantes
aqui, que são os ponteiros de arquivo fopen.
E então estamos usando bom fclose remove e renomeia.
E então o fopen e o fgetc.
Se você tiver quaisquer perguntas, por favor me envie um e-mail.
Vou salvar este arquivo de origem como zip arquivo para que você possa dar uma olhada nele.
Obrigada.