Torna indietro   Hardware Upgrade Forum > Software > Programmazione

FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 porta il Wi-Fi 7 dual-band nelle case connesse. Mette a disposizione fino a 2.880 Mbit/s su 5 GHz e 688 Mbit/s su 2,4 GHz, integrazione Mesh immediata via WPS con FRITZ!Box e funzioni smart come MLO per bassa latenza. Compatto, plug-and-play e pronto per il futuro, è la soluzione ideale per chi vuole coprire ogni angolo senza cavi o complicazioni
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
La Fondazione Chips-IT ha presentato a Pavia il piano strategico 2026-2028 per rafforzare l'ecosistema italiano dei semiconduttori. Con un focus su ricerca, design, talenti e infrastrutture, la Fondazione punta a consolidare il ruolo dell'Italia nel Chips Act europeo, sostenendo innovazione, collaborazione industriale e sovranità tecnologica.
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Al Museo Alfa Romeo di Arese, Nutanix ha riunito clienti, partner ed esperti per .Next On Tour Italia e per mostrare come l’infrastruttura hybrid multicloud possa diventare il fondamento dell’innovazione, con una piattaforma capace di unificare applicazioni tradizionali, moderne architetture cloud-native e nuovi scenari basati sull’intelligenza artificiale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-05-2003, 19:29   #1
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Aiuto con primi programmi in c

Studiando dal Kernighan-Ritchie mi sono imbattuto in questo semplice programmino che però presenta un aspetto a me non del tutto chiaro:
il programma serve per il conteggio dei caratteri di un flusso proveniente da tastiera:

#include <stdio.h>
main()
{long nc;
nc=0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);}

Quello che non mi è chiaro è il significato ed il funzionamento dell'EOF (end of file). Infatti scrivendo

while (getchar() != 'a')

non appena inserisco una 'a' da tastiera il programma mi da il conteggio dei caratteri. Usando l'EOF invece come faccio a visualizzare questo risultato? Aiutatemi per favore perchè l'EOF è presente nella maggiorparte dei programmi che il libro presenta (copia tra file, conteggio delle linee ecc...)
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:16   #2
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: Aiuto con primi programmi in c

Quote:
Originally posted by "terrys3"

Studiando dal Kernighan-Ritchie mi sono imbattuto in questo semplice programmino che però presenta un aspetto a me non del tutto chiaro:
il programma serve per il conteggio dei caratteri di un flusso proveniente da tastiera:

#include <stdio.h>
main()
{long nc;
nc=0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);}

Quello che non mi è chiaro è il significato ed il funzionamento dell'EOF (end of file). Infatti scrivendo

while (getchar() != 'a')

non appena inserisco una 'a' da tastiera il programma mi da il conteggio dei caratteri. Usando l'EOF invece come faccio a visualizzare questo risultato? Aiutatemi per favore perchè l'EOF è presente nella maggiorparte dei programmi che il libro presenta (copia tra file, conteggio delle linee ecc...)
FEOF è un indicatore di "fine file", difatti EOF significa End Of File.
Quel libro è vecchissimo, utilizza un "dialetto" di C che va prima della standardizzazione che non usa + nessuno. Non so come intenda l'EOF quel libro, comunque sostituisci '\n' con EOF nel programma e vedi che con un semplice invio ricevi il risultato. Se vuoi imparare il C, compera un libro recente. Va in giro il C99, imparare il C Kernighan e Ritchie nel 2003 non so se mi sembra il caso, visto che molti compilatori stanno eliminando pure il supporto.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:24   #3
sergio83
Senior Member
 
L'Avatar di sergio83
 
Iscritto dal: Mar 2000
Messaggi: 674
Ti conta i caratteri fino a che non scrivi il carattere "eof" (che dovrebbe essere "CTRL+z" in linux, in windows non so) il quale ti fa uscire dal ciclo
A questo punto ti stampa il numero di caratteri premuti. Cmq se hai problemi ascolta i consigli di mjordan: sostituisci EOF con '\n' (che non è altro che l'enter) oppure cambia libro!
Ciao!
sergio83 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:26   #4
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quello che ho io è la seconda ediziona basata sul linguaggio ansi C. Mi consigliate davvero di comprarne un altro? Potrebbe crearmi grossi problemi imparare da questo?
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:28   #5
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "terrys3"

Quello che ho io è la seconda ediziona basata sul linguaggio ansi C. Mi consigliate davvero di comprarne un altro? Potrebbe crearmi grossi problemi imparare da questo?
Appunto è vecchio. L'ultimo standard lo ha fatto l'ISO
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:32   #6
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quote:
Originally posted by "mjordan"



Appunto è vecchio. L'ultimo standard lo ha fatto l'ISO
potresti consigliarmi allora un buon libro che non sia difficile da trovare? Qui dalle mie parti già ho faticato non poco per trovare quello che ho!!!
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:34   #7
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
uno dei + semplici (per iniziare è ovvio ) ritengo sia:

programmare in C di peter Aitken & Bradley L. Jones
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n;
Utilizzando atomi trivalenti drogheremo il silicio di tipo p;
Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:36   #8
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quote:
Originally posted by "maxithron"

uno dei + semplici (per iniziare è ovvio ) ritengo sia:

programmare in C di peter Aitken & Bradley L. Jones
preferirei un libro che pur partendo dagli elementi basilari (che cmq ho già studiato in passato da altre fonti) giunga fino a cose di una certa complessità!
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 20:47   #9
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Nessuno sa dirmi come si da l'EOF sotto Windows?
Dovrebbe essere ctrl+z (oppure ctrl+d) ma ho provato ed esce scritto ^Z (oppure ^D)... sapete aiutarmi?
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 03:17   #10
skyblaze
Senior Member
 
Iscritto dal: Aug 2002
Messaggi: 356
Quote:
Originally posted by "mjordan"



Appunto è vecchio. L'ultimo standard lo ha fatto l'ISO
si ma ISO ha solamente adottato lo standard ANSI rimarchiandolo iso99...lo standard è sempre ANSI.....almeno cosi ho letto da molte parti....no dico questo perche pure io sto imparando da un libro scritto da 2 italiani che si rifa all'ansi
skyblaze è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 10:08   #11
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "skyblaze"

si ma ISO ha solamente adottato lo standard ANSI rimarchiandolo iso99...lo standard è sempre ANSI.....almeno cosi ho letto da molte parti....no dico questo perche pure io sto imparando da un libro scritto da 2 italiani che si rifa all'ansi
E ovvio che se fai un nuovo standard prendi prima quello che c'era già, o no?
Comunque il C99 aggiunge diverse cose al C.
Innanzitutto potenzia notevolmente la libreria matematica.
Aggiunge il supporto per il numeri complessi e numeri immaginari.
Elimina la regola dell'int implicito (unsigned long non vale più, bisogna scrivere unsigned long int), così come non specificare il tipo di ritorno di una funzione non vale +.
Aggiunge il tipo di dati 'bool' per variabili booleane.
Consente la dichiarazione di variabili in cicli e in mezzo a codice. Per esempio:

Codice:
...
...
for (int i = 0; i < 10; i++) {
        fai_qualcosa();
        ...
}
è perfettamente valido in C99, cosi anche come:
Codice:
int
main(int argc, char ** argv)
{
        int i; /* Variabile */

        printf("Ciao a tutti!\n"); /* Istruzione */

        char ch; /* Altra variabile */

        return 0;
}
Aggiunge i commenti su una sola riga, stile C++
Aggiunge gli array di lunghezza variabile. Per esempio:

Codice:
void 
my_func(int x, int y)
{
        int my_array[x,y];

        ...
}
Aggiunge la nuova parola riservata "restrict", che consente di fare ciò che in C90 bisognava dire a parole (che magari due oggetti puntati non dovevano sovrapporsi).

Aggiunge la parola riservata 'inline' per il function inlining.

Aggiunge un pozzo di altra roba ....

Un bel linguaggio. Il C è sempre + forte.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 10:11   #12
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "terrys3"



preferirei un libro che pur partendo dagli elementi basilari (che cmq ho già studiato in passato da altre fonti) giunga fino a cose di una certa complessità!
Benissimo. Se hai già delle basi il libro che fa al caso tuo è l'Herbert Schildt, Guida completa C, McGrawHill.
Mi pare sia l'unico attualmente a trattare lo standard C99, inoltre presenta gli argomenti in maniera semplice, ma procede fino ad esempi + complessi. Gli ultimi capitoli sono una figata, anche se seguirli attentamente richiede moltissimo tempo.

Ciao.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 10:14   #13
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "maxithron"

uno dei + semplici (per iniziare è ovvio ) ritengo sia:

programmare in C di peter Aitken & Bradley L. Jones
L'ho letto anch'io. Per cominciare è un libro fantastico. Confermo anch'io questo libro per chi è alle prime armi.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 13:34   #14
skyblaze
Senior Member
 
Iscritto dal: Aug 2002
Messaggi: 356
Quote:
Originally posted by "mjordan"



E ovvio che se fai un nuovo standard prendi prima quello che c'era già, o no?
Comunque il C99 aggiunge diverse cose al C.
Innanzitutto potenzia notevolmente la libreria matematica.
Aggiunge il supporto per il numeri complessi e numeri immaginari.
Elimina la regola dell'int implicito (unsigned long non vale più, bisogna scrivere unsigned long int), così come non specificare il tipo di ritorno di una funzione non vale +.
Aggiunge il tipo di dati 'bool' per variabili booleane.
Consente la dichiarazione di variabili in cicli e in mezzo a codice. Per esempio:

Codice:
...
...
for (int i = 0; i < 10; i++) {
        fai_qualcosa();
        ...
}
è perfettamente valido in C99, cosi anche come:
Codice:
int
main(int argc, char ** argv)
{
        int i; /* Variabile */

        printf("Ciao a tutti!\n"); /* Istruzione */

        char ch; /* Altra variabile */

        return 0;
}
Aggiunge i commenti su una sola riga, stile C++
Aggiunge gli array di lunghezza variabile. Per esempio:

Codice:
void 
my_func(int x, int y)
{
        int my_array[x,y];

        ...
}
Aggiunge la nuova parola riservata "restrict", che consente di fare ciò che in C90 bisognava dire a parole (che magari due oggetti puntati non dovevano sovrapporsi).

Aggiunge la parola riservata 'inline' per il function inlining.

Aggiunge un pozzo di altra roba ....

Un bel linguaggio. Il C è sempre + forte.
Lo so che un nuovo standard si rifa a quello vecchio ma quello che volevo dire è che in questo caso ha solo adotatto lo standard ansi senza aggiungere niente e lo ha rinominato iso infatti si chiama anche ansi/iso...ma a quanto hai detto non è cosi......ma...PORC
E io che sto studiando su un libro ansi c che faccio ora?
skyblaze è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 14:00   #15
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quote:
Originally posted by "skyblaze"

Lo so che un nuovo standard si rifa a quello vecchio ma quello che volevo dire è che in questo caso ha solo adotatto lo standard ansi senza aggiungere niente e lo ha rinominato iso infatti si chiama anche ansi/iso...ma a quanto hai detto non è cosi......ma...PORC
E io che sto studiando su un libro ansi c che faccio ora?
siamo nella stessa situazione per fortuna ho iniziato da poco a studiare, anche se acquistare un nuovo libro e buttare (in senso metaforico) quello che ho non è una bella cosa!!! Mi ero fidato di un amico che studia programmazione da un sacco di anni... ma a quanto pare non era aggiornato!!!
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 14:06   #16
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "skyblaze"

Lo so che un nuovo standard si rifa a quello vecchio ma quello che volevo dire è che in questo caso ha solo adotatto lo standard ansi senza aggiungere niente e lo ha rinominato iso infatti si chiama anche ansi/iso...ma a quanto hai detto non è cosi......ma...PORC
E io che sto studiando su un libro ansi c che faccio ora?
Le aggiunte sono tante ma non preoccuparti. Non è stato aggiunto nulla che rompa la compatibilità con lo standard ANSI, a parte le nuove funzionalità particolari.
Il qualificatore restrict non cambia la semantica dei programmi.
Certo, se vuoi conoscere le nuove funzionalità devi comperare un libro che le descriva, come quello che ho consigliato prima, ma, in sostanza, il linguaggio non è stato cambiato.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 14:07   #17
skyblaze
Senior Member
 
Iscritto dal: Aug 2002
Messaggi: 356
Quote:
Originally posted by "terrys3"



siamo nella stessa situazione per fortuna ho iniziato da poco a studiare, anche se acquistare un nuovo libro e buttare (in senso metaforico) quello che ho non è una bella cosa!!! Mi ero fidato di un amico che studia programmazione da un sacco di anni... ma a quanto pare non era aggiornato!!!
Anche io sono all'inizio.....oddio ho fatto 2 capitoli che non sono proprio pochini
Il libro me lo ha dato mio cugino che lo aveva usato per l'universita di informatica
A sto punto cosa mi consigliate?Devo veramente cambiare libro e prendere uno ultimo che parla di iso c?Mi pare che le differenze siano abbastanza sostanziali a partire dalle variabili logiche(o booleane)....pensate che nel mio libro a un certo punto dice:"In c non esistono variabili logiche come nel basic"
skyblaze è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 14:21   #18
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Calmi calmi, state attenti tutti.
Il tipo bool è soltanto un typedef ad un intero, quindi in realtà non è strettamente necessario.
Le regole abolite, come quelle dell'int implicito, sono state eliminate, ma sono differenze veramente marginali. In sostanza, a parte chi usa il Kernighan e Ritchie non deve "buttare" nulla. Tutto è applicabile e funzionante.
Inoltre bisogna considerare che la totalità dei compilatori di default accetta la versione ANSI C 89 e successiva revisione C90 e quindi, per compilare programmi "strict C99" bisogna passare dei flag particolari.

Per esempio, il seguente programma in ISO C 99:
Codice:
#include <stdio.h>
#include <stdbool.h> // Il nuovo header per i tipi booleani.

int
main(void)
{
        bool b[10]; // Array booleano. Questo è un commento su una sola riga.

        for (int i = 0; i < 10; i++) // Dichiarazione di variabil ein un ciclo.
                b[i] = false;

        return 0;
}
sotto GCC per essere compilato correttamente necessita del flag `-std=c99' , questo fino a quando il C99 non diverrà "widely adopted", dopo il quale sarà lo standard accettato di default.

Chi usa invece il C traditional (pre-ANSI K&R) dovrebbe aggiornarsi. Molti compilatori stanno eliminando i supporti. Per esempio gcc 3.4 eliminerà gran parte del supporto per il C traditional e molti costrutti non compileranno +, come ad esempio i prototipi del tipo:

Codice:
void my_func(int, int);
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 14:29   #19
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "skyblaze"

Anche io sono all'inizio.....oddio ho fatto 2 capitoli che non sono proprio pochini
Se vuoi davvero imparare a programmare altro che 2 capitoli
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 14:32   #20
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "mjordan"

Calmi calmi, state attenti tutti.
Il tipo bool è soltanto un typedef ad un intero, quindi in realtà non è strettamente necessario.
Anzi per essere precisi bool è una macro che utilizza il tipo _Bool che è un typedef ad un int.
Anche se il tipo quindi è _Bool, nei nuovi programmi dev'essere usato bool.
Il fatto è che al momento dello standard si era visto che già diversi compilatori avevano già implementato il proprio tipo di dati booleano, quindi è stato scelto il nome _Bool per non rompere la compatibilità con le caratteristiche già esistenti. Per il resto, per il nuovo codice, basta usare bool.
mjordan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica Fondazione Chips-IT, l'Italia alla riscossa nei ...
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud Nutanix: innovazione, semplicità e IA al ...
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Il futuro dei chip è verticale: R...
Accenture e Anthropic insieme per aiutar...
Fino a 360 GB su un vetro grande come un...
tado° porta il bilanciamento idrauli...
Metallo liquido o solido? Entrambi, cont...
iPhone 17 Pro Max in offerta su Amazon: ...
A Taranto divieto di bici, e-bike e mono...
Scopa elettrica lava e aspira come una t...
SumUp continua a crescere ed espande l'o...
Volkswagen ID.Polo: da 25.000 euro, in q...
iPhone Fold: le ultime indiscrezioni sug...
Audi Revolut F1 Team: annunciati nome e ...
Resident Evil - Code Veronica Remake: l'...
Occhio ai prezzi dei robot ECOVACS Deebo...
IQM investe 40 milioni di euro per espan...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v