Ciao e Benvenuto.
In questa conferenza, voglio farlo fornire
una soluzione alla nostra sfida precedente, ovvero la conversione un file che contiene
caratteri minuscoli in un file che contiene caratteri maiuscoli.
Nel frattempo creeremo un file temporaneo, quindi dovremo
rinominare ed eliminare e così via.
E l'output finale per il programma sarà il file.
Leggeremo nel file che era già stato convertito in maiuscolo.
Quindi portiamo in primo piano il codice blocchi, creare un progetto.
Dirò nuovo progetto, console applicazione,
vai c e questo sarà chiamato conversione di file minuscoli.
Stiamo solo andando a che questo sia il nostro principale. c.
Vogliamo essere sicuri di creare la nostra intestazione
io standard perché leggere e scrivere e usando fopen e così via.
Quindi quello che mi piace sempre fare è creare il file in primo piano.
Quindi qui vado a definire una costante per il nome del mio file.
Chiamiamolo definire.
E questa volta chiameremo test. testo.
E quindi diremo solo il nome del file è tutto maiuscolo.
Mi piace fare quella convenzione.
E poi lo farò effettivamente creare il nome del file nel nostro progetto.
Quindi, ancora una volta, memorizzo i miei file all'interno della mia directory dei download.
È lì che tutto il mio i progetti vengono archiviati.
E in questo caso abbiamo un progetto chiamato conversione di file minuscolo.
Lo metterò a posto
nella stessa directory, quindi posso eseguirlo dall'IDE.
Creerò un nuovo file di testo.
Denominerò questo test. testo.
E lo solleverò e metterò solo
alcuni caratteri minuscoli e maiuscoli.
Quindi diciamo che Jason sta testando. Va bene, qualunque sia un test alcuni sono maiuscoli,
altri sono minuscoli in
risultato finale, queste saranno sempre maiuscole, un'altra sfida.
Ci siamo.
Quindi il risultato finale di questo file sta per essere testato. txt con tutto questo
in maiuscolo.
Ma lo salveremo con alcune maiuscole e altre minuscole.
Ora abbiamo creato il nostro file ora possiamo
effettivamente leggere e scrivere.
Creerò un paio di file puntatori con file tutto maiuscolo e
maiuscolo, e dirò star fp.
Lo inizializzerò a null, quindi
creerò un altro puntatore di file star fp1 e anche uguale a null.
Ancora una volta ho bisogno di due
qui perché Leggerò e scriverò su file separati, essenzialmente un file temporaneo.
Creerò anche un personaggio variabile, che sarà il carattere
che leggiamo usando fgetc.
E lascerò anche quello uguale anche a null o meglio ancora,
lo lascerò semplicemente stringa vuota.
La prima cosa che devo fare è io è necessario
aprire il file in modalità di lettura per il primo file che è fp e il secondo file sarà un file temporaneo.
Quindi dirò che fp è uguale a fopen.
Userò il file test del nome del file. testo.
Quindi nome del file e vado per aprire in sola lettura.
E poi voglio fare sicuro che questo sia un valore nullo.
Quindi dirò se fp è uguale a null,
quindi restituirò solo negativo 1.
Quindi voglio creare il mio file temporaneo.
Quindi qui vado creare un file temporaneo.
E in questo caso lo farò apri un file per la scrittura.
Quindi userò il mio puntatore fp1, e sto per dire fopen.
Questo lo chiamerò solo temp. text, lo creerà se
non esiste.
E poi vado a mettere la w perché
ci scriverò solo per scrivere.
Di nuovo, quello che voglio fare ecco che voglio
assicurarmi che fp1 non sia uguale a null.
Quindi dirò fp1.
Se è uguale a null, allora sono solo restituirà uno negativo.
Quindi ora ho aperto due file, uno per leggere, uno per scrivere.
La scrittura è per il file temporaneo.
E quello che voglio fare dopo è che voglio per iniziare a leggere dal file e poi
a scrivere tutte le maiuscole.
Quindi voglio aggiungere un ciclo while a read e
voglio dire mentre il tipo di dati del carattere ch è uguale a fgetc e
voglio leggere dal mio test. testo, quindi fp e voglio farlo finché non raggiungo la fine del file.
Quindi posso dire non uguale a eof.
Eof è una costante speciale.
Nel mio ciclo while, voglio farlo controlla se qualcuno dei caratteri che sto leggendo
è minuscolo.
Quindi voglio dire se è ch inferiore, se trovo un carattere
minuscolo, allora voglio solo
impostare il carattere in maiuscolo.
Quindi posso dire ch è uguale a ch meno 32.
Questo convertirà il personaggio in un carattere maiuscolo.
Poi dopo averlo convertito, o è convertito o no, è maiuscolo o no, quindi
io voglio scriverlo nel mio file temporaneo.
Quindi qui posso dire fputc.
E posso solo dire il mio personaggio che voglio scrivere e il puntatore al
file che è fp1.
Quindi ogni volta che leggo un personaggio, Lo sto scrivendo nel mio file temporaneo.
E se è minuscolo, sto convertendo in maiuscolo e poi scrivendolo.
Quindi la fine di questo ciclo while è Ho un file temporaneo
che contiene tutti i caratteri del file test. testo con lettere maiuscole.
E così ho finito con entrambi quei file di lettura e scrittura.
Quindi posso dire fclose fp e fclose fp1.
Voglio ora rinominare il mio temp file al mio test. file di testo.
Quindi qui posso solo dire rinomina, chiama la funzione di
rinomina e posso dire temp. testo è quello che voglio rinominare.
E quello che voglio rinominare è test. text o usa la mia
costante che è filename.
Ho ancora creato il mio file temporaneo.
Quindi voglio eliminare il file temporaneo.
Quindi rimuovi il file temporaneo.
Qui posso chiamare la rimozione funzione e passarlo in temp. testo.
E poi l'ultima cosa che
voglio quello che devo fare è stampare il contenuto del mio test. file di testo, che sarà convertito in maiuscolo.
Invece di chiudere fp perché che punta a testare. testo, non potrei chiuderlo ora,
potrei basta chiudere fp1 perché fp1
era il temp. testo e questo è il file uno che sto rinominando e rimuovendo.
In realtà devo chiudere perché l'ho rinominato.
Quindi dovrò chiudere fp.
Quindi ora sulla linea 43, voglio riaprire fp perché ora voglio leggere il contenuto
e stamparlo.
Quindi posso dire fp fopen file name o scusate il nome del file e voglio leggerlo.
Quindi dirò solo r.
Di nuovo, voglio fare certo non è nullo.
E se è uguale a null, voglio tornare.
E voglio solo dire restituire uno negativo.
Potrei stampare qualche input.
E poi qui voglio leggere i dati e stamparli.
Quindi posso fare un altro ciclo while.
Non abbiamo ancora stampato nulla, quindi dovremmo essere
in grado di dire solo mentre ch è uguale a fgetc fp e non è uguale a eof.
E quello che vogliamo fare siamo noi voglio solo stampare ch.
Quindi possiamo dire percent c ch, e poi abbiamo finito.
E poi ancora, alla fine, noi vogliamo chiudere l'ultimo file che è fp e
vogliamo impostare fp uguale a null e fp1 uguale a null.
Quindi assicuriamoci che questo si sviluppi.
Quindi siamo a posto.
Siamo in grado di compilare, mettere un punto e virgola nella linea di 54 ho avuto un colon lì.
Quindi se torniamo indietro attraverso questo codice creiamo un
paio di puntatori a file.
Abbiamo la nostra costante.
Apriamo un file.
Lo leggiamo.
E mentre leggiamo, noi scriverlo in un file temporaneo.
Quindi eliminiamo il file temporaneo.
Dobbiamo eliminare entrambi i file stiamo leggendo da e il file temporaneo
perché dobbiamo rinominare e rimuovere.
Non possiamo chiamare rinomina o rimuovere su un file o su un file già aperto, quindi
dobbiamo chiuderli.
Quindi riapriamo e stampiamo i dati.
Quindi eseguiamo questo.
Dovremmo vedere l'output con tutte le informazioni sui caratteri da.
Quindi, quando eseguiamo questo programma, quello che vedremo è che stampa tutto in maiuscolo.
Quindi di nuovo, lo eseguiamo, stampa tutto in lettere maiuscole.
Se guardiamo il file su disk, possiamo guardare il test. text e lo noteremo ora
contiene tutto in maiuscolo.
Di nuovo, se volessimo cambiare questo e cambia ancora un po 'minuscolo.
Quindi lo salviamo qui è minuscolo eseguiamo il programma
e converte tutto in maiuscolo.
Ancora una volta, se eseguiamo questo, stampalo in maiuscolo.
Lo guardiamo ed è tutto maiuscolo.
Quindi un bel programmino che convertirà i caratteri
minuscoli in maiuscoli.
Abbastanza semplice, lo siamo usando le nostre
funzioni importanti qui, che sono puntatori di file fopen.
E poi usiamo Nice fclose rimuove e rinomina.
E poi fopen e fgetc.
Se hai qualche domanda, per favore mandami un'email.
Salverò questo file sorgente come zip file in modo da poterlo dare un'occhiata.
Grazie.