Il video è molto utile, complimenti. Dato che non ho l'entensione per poter usare getline, c'è una soluzione o devo istallarla obbligatoriamente per scrivere un codice che fa una cosa simile?
No puoi tranquillamente scriverne una tu che faccia una cosa simile (ce ne sono tante già scritte se cerchi). In generale con i file è comodo avere alcune funzioni ausiliarie che ti semplificano operazioni comuni come leggere linee, controllare errori e memorizzare il contenuto del file in strutture dati
Ciao sono Francesco. Vorrei un chiarimento: quali sono le differenze essenziali tra C e C++? Vorrei anche sapere se un programma scritto in C è eseguibile con il compilatore C++ e viceversa. È ancora: quale tra i due è più veloce nell esecuzione dei programmi? Grazie per la risposta che spero arrivi presto.
Ciao, rispondo io. C++ ha una sintassi più facile ed intuitiva di C, supporta la programmazione orientata agli oggetti mentre C no, introduce un sistema di gestione degli errori con try throw ecc molto più comoda di C, ha librerie standard che introducono list, vector, map ed in generale algoritmi più facili ed efficaci, ha una miglior gestione della memoria (dinamica ecc) di C, per ora non mi viene in mente altro. In linea di massima sì, puoi compilare C con C++ perché quest'ultimo è un upgrade di C e dunque comprende molte parti della sintassi, mentre non puoi compilare C++ con C. Nell'esecuzione non è facile dire chi dei due è più veloce. Tieni conto che più le cose si semplificano per l'umano, più si complicano per la macchina. Dunque, un linguaggio basso basso livello è sicuramente più veloce e meno pesante. Tuttavia, essendo un linguaggio più vecchio, ha funzioni e librerie che sono state rivisitate ed ottimizzate. Dunque, direi che sono in generali simili, perché poi dipende tutto dal codice che scrivi tu programmatore. Spero di esser stato d'aiuto.
utile e ho capito molto di piu...ma io non riesco a crearmi proprio il file, forse perchè sono da windows e devo scrivere diversamente? mi dice tipo USA CRT_SECURE_NO_WARNINGS ma poi argomenti insfficienti per lo scanf_s ma dai
Per la prima richiesta la cosa più semplice che puoi fare è leggere il contenuto del file e salvartelo in una stringa. Fare sostituzione della parola che ti interessa nella stringa salvata e riscrivere totalmente il file incollandoci dentro la stringa modificata. Nel caso di file lunghi puoi fare queste operazioni salvando nella variabile un certo numero di righe (anziché tutto il file) e passare poi alle successive fino a fine file. Per la seconda richiesta anche qui: leggerei il file, salverei il contenuto in una variabile e lavorerei su essa.
@@GetTheCookie Uso il ciclo che mi permette di leggere riga per riga e lo confronto con la parola da sostituire , in tal caso scrivo tutto in un altro file creato appositamente . Giusto? grazie mille
Come soluzione funzionante va bene come dici tu, anche se nulla ti vieta di riscrivere il tutto nello stesso file, senza crearne uno nuovo. Attenzione però in questo caso ai conflitti avendo lo stesso file aperto in lettura e in scrittura (dovresti prima leggere tutto e solo alla fine riscrivere tutto il contenuto). In alternativa, per usare meno memoria, puoi leggere il file riga per riga, memorizzando solo una riga alla volta (l'ultima letta), e controllare se quella riga contiene la tua parola. Se si, usando le funzioni di fseek, puoi spostarti e scrivere manualmente in una posizione specifica del file. Questo consuma solo una quantità di memoria costante (il buffer in cui metti le righe), e legge tutte le righe del file.
Si, getline è un estensione POSIX (del 2008). Ci sono modi per farla funzionare con compilatori più vecchi ma non ne vale la pena, dato che puoi emulare il suo comportamento usando metodi più semplici
Esatto, il comportamento per quando si chiude un file (in particolare, quando lo si ha modificato e si deve chiudere) non è definito, e quindi c'è sempre un livello di incertezza che si combatte adottando principi e standard come le regole di buona programmazione riguardo ai file
grazie a dio qualcuno che spiga in maniera intuitiva questi temi c'è ancora.
Felici di aver aiutato :)
Complimenti !! Molto interessante, sopratutto l'ultima parte sulle chiamate di sistema e la comparazione tra fread e read !!!
il video è utilissimo e ben fatto, ma mi sento di consigliarvi di ingrandire leggermente il testo per facilitarne la lettura
Siete grandi!
Il video è molto utile, complimenti. Dato che non ho l'entensione per poter usare getline, c'è una soluzione o devo istallarla obbligatoriamente per scrivere un codice che fa una cosa simile?
No puoi tranquillamente scriverne una tu che faccia una cosa simile (ce ne sono tante già scritte se cerchi).
In generale con i file è comodo avere alcune funzioni ausiliarie che ti semplificano operazioni comuni come leggere linee, controllare errori e memorizzare il contenuto del file in strutture dati
BEL VIDEO! Ma che compilatore usi?
Quello di C :)
@@GetTheCookie come se chiama?
L'ide è CLion, il compilatore è gcc
utilissimo
Ciao sono Francesco. Vorrei un chiarimento: quali sono le differenze essenziali tra C e C++?
Vorrei anche sapere se un programma scritto in C è eseguibile con il compilatore C++ e viceversa.
È ancora: quale tra i due è più veloce nell esecuzione dei programmi?
Grazie per la risposta che spero arrivi presto.
Ciao, rispondo io. C++ ha una sintassi più facile ed intuitiva di C, supporta la programmazione orientata agli oggetti mentre C no, introduce un sistema di gestione degli errori con try throw ecc molto più comoda di C, ha librerie standard che introducono list, vector, map ed in generale algoritmi più facili ed efficaci, ha una miglior gestione della memoria (dinamica ecc) di C, per ora non mi viene in mente altro.
In linea di massima sì, puoi compilare C con C++ perché quest'ultimo è un upgrade di C e dunque comprende molte parti della sintassi, mentre non puoi compilare C++ con C.
Nell'esecuzione non è facile dire chi dei due è più veloce. Tieni conto che più le cose si semplificano per l'umano, più si complicano per la macchina. Dunque, un linguaggio basso basso livello è sicuramente più veloce e meno pesante. Tuttavia, essendo un linguaggio più vecchio, ha funzioni e librerie che sono state rivisitate ed ottimizzate. Dunque, direi che sono in generali simili, perché poi dipende tutto dal codice che scrivi tu programmatore. Spero di esser stato d'aiuto.
potresti gentilmente dirmi quale compilatore usavi in questo video?
grazie.
gcc
@@GetTheCookie volevo chiedere del editor di testi in realtà 😅
Quello è CLion di jetbrains
Ma perché il while(feof(file)) crea un botto di problemi?? C'è un alternativa valida?
utile e ho capito molto di piu...ma io non riesco a crearmi proprio il file, forse perchè sono da windows e devo scrivere diversamente? mi dice tipo USA CRT_SECURE_NO_WARNINGS ma poi argomenti insfficienti per lo scanf_s ma dai
Non mi va "getline" come posso fare, grazie.
se voglio sostituire una determinata parola all'interno del file come posso fare ? oppure come posso stampare solamente la parola ?
Per la prima richiesta la cosa più semplice che puoi fare è leggere il contenuto del file e salvartelo in una stringa. Fare sostituzione della parola che ti interessa nella stringa salvata e riscrivere totalmente il file incollandoci dentro la stringa modificata.
Nel caso di file lunghi puoi fare queste operazioni salvando nella variabile un certo numero di righe (anziché tutto il file) e passare poi alle successive fino a fine file.
Per la seconda richiesta anche qui: leggerei il file, salverei il contenuto in una variabile e lavorerei su essa.
@@GetTheCookie Uso il ciclo che mi permette di leggere riga per riga e lo confronto con la parola da sostituire , in tal caso scrivo tutto in un altro file creato appositamente . Giusto? grazie mille
Come soluzione funzionante va bene come dici tu, anche se nulla ti vieta di riscrivere il tutto nello stesso file, senza crearne uno nuovo.
Attenzione però in questo caso ai conflitti avendo lo stesso file aperto in lettura e in scrittura (dovresti prima leggere tutto e solo alla fine riscrivere tutto il contenuto).
In alternativa, per usare meno memoria, puoi leggere il file riga per riga, memorizzando solo una riga alla volta (l'ultima letta), e controllare se quella riga contiene la tua parola. Se si, usando le funzioni di fseek, puoi spostarti e scrivere manualmente in una posizione specifica del file. Questo consuma solo una quantità di memoria costante (il buffer in cui metti le righe), e legge tutte le righe del file.
@@GetTheCookie grazie mille...
Tutto chiarissimo, ma non so perchè mi da "getline" come errore. Forse non è valido con C99 (?)🤷♀
Si, getline è un estensione POSIX (del 2008).
Ci sono modi per farla funzionare con compilatori più vecchi ma non ne vale la pena, dato che puoi emulare il suo comportamento usando metodi più semplici
Grazie della risposta :)
Proverò con una funzione
Tipicamente se non chiudi il file e l'hai aperto in "w" o"a" non ti salva le modifiche che hai fatto. Comunque grandissimi
Esatto, il comportamento per quando si chiude un file (in particolare, quando lo si ha modificato e si deve chiudere) non è definito, e quindi c'è sempre un livello di incertezza che si combatte adottando principi e standard come le regole di buona programmazione riguardo ai file
Le spiegazioni sono ottime ma i video su dispositivi mobili hanno il font troppo piccolo per persone anziane come me 😂😂😂
Grazie del suggerimento, effettivamente è una cosa che non avevamo valutato in questi primi video 😅