Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-08-2009, 10:27   #1
karlettinos
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 25
[C] programma conteggio caratteri -non quadra-

Questo codice preso dal Kernighan doverbbe, secondo l'autore:

1) contare i caratteri digitati;
2) terminare il programma una volta finiti i caratteri immessi.

#include <stdio.h>
/*conta i caratteri*/
main()
{

int nc;
nc=0;

while (getchar()!=EOF)
++nc;
printf("%3d\n", nc);

}

Ma il risultato è questo:

MacBook-carlorogrammic carlo$ ./contchar1
kkkk
1
2
3
4
5

dove kkkk è la mia digitazione
e i numeri sono il conteggio.

Come si può notare i caratteri sono 4, e il conteggio ne rivela 5.
Poco male, si potrebbe impostare il contatore a -1.
Ma il problema è che dopo il quarto carattere getchar legge il carattere EOF (cioè la stringa è finita), ma invece di terminare ciclo e programma, come dichiarato dall'autore:

1) esegue ancora una volta il corpo del ciclo;
2) si posiziona ancora su getchar in attesa di nuovo input.

Infatti potete vedere che non è ricomparsa la riga di comando del terminale e dopo il 5 posso già digitare la nuova seq di carattere poichè il programma è ancora in funzione (cioè non è terminato).

Come faccio a realizzare un vero programma di conteggio caratteri che mi stampi solo il numero finale di caratteri e che termini il programma definitivamente?

Grazie a tutti!

Ciao!

k.

Ultima modifica di karlettinos : 04-08-2009 alle 10:31.
karlettinos è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 10:44   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Mi sa che lì ricevi anche il '\n' dell'invio: controlla che il carattere non sia '\n' prima di incrementare e stampare il numero di caratteri, così alla pressione di Ctrl + D (o Ctrl + Z, a seconda del tuo sistema operativo) il programma si chiuderà con il giusto numero di caratteri.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 10:56   #3
karlettinos
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 25
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Mi sa che lì ricevi anche il '\n' dell'invio: controlla che il carattere non sia '\n' prima di incrementare e stampare il numero di caratteri, così alla pressione di Ctrl + D (o Ctrl + Z, a seconda del tuo sistema operativo) il programma si chiuderà con il giusto numero di caratteri.
Grande Daniele! Grazie mille!!

Nel codice ho sositutito EOF con \n:

#include <stdio.h>
/*conta i caratteri*/
main()
{

int nc;
nc=0;

while (getchar()!='\n')
++nc;
printf("%3d\n", nc);

}

e ora funziona perfettamente!

Mi sorge allora un dubbio: è meglio che butto il testo nel cestino???!
karlettinos è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 11:22   #4
_Claudio
Senior Member
 
L'Avatar di _Claudio
 
Iscritto dal: Aug 2005
Messaggi: 579
Quote:
Originariamente inviato da karlettinos Guarda i messaggi
Mi sorge allora un dubbio: è meglio che butto il testo nel cestino???!
Se non ha specificato in quale set di caratteri e su quale sistema operativo funziona l'esempio direi proprio di sì.
_Claudio è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 11:30   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Be', molti considerano il K&R la "bibbia" del C, ma credo che sia più o meno vecchio quanto il linguaggio che tratta. Personalmente non saprei, ho sempre studiato i vari linguaggi senza libri, ma ho visto che all'università consigliano il Deitel, da un veloce sguardo mi sembra che tratti bene gli argomenti e che proponga esercizi "stuzzicanti".

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 12:38   #6
goldorak
Senior Member
 
Iscritto dal: Apr 2003
Messaggi: 16462
Il C e' un linguaggio molto succinto, quindi il K&R va piu' che bene.
E molto conciso, ha degli esempi non banali ed e' un libro che si legge tranquillamente. 240 pagine di C distillato.
Le uniche cose che non tratta sono le aggiunte al C99, ma per questo bastano 10 pagine scarse e la documentazione si trova dappertutto.
__________________
MICROSOFT : Violating your privacy is our priority
goldorak è offline   Rispondi citando il messaggio o parte di esso
Old 05-08-2009, 18:45   #7
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Il libro diciamo che a parte certi errori (che ho trovato pure io) mi sembra ben fatto e spieghi passo passo la programmazione in C.
__________________
------------------------------------------------------------------------------------------------------------
Intel Core 2 Duo 2.66Ghz - 3gb Ram - Hard Disk 250gb - Scheda Video: GeForce 8500 Gt da 512mb - Windows Xp Pro SP3
IPHONE 3GS 16GB BLACK
MACBOOK PRO 15,4" 2.40GHz - 4GB RAM 320GB HD
------------------------------------------------------------------------------------------------------------
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2009, 01:44   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Il libro probabilmente come caratteri intende i char in generale e \n è effettivamente un char: quando hai digitato kkkk e poi invio non hai digitato solo kkkk ma anche invio, quindi è giusto che sia contato.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Samsung Galaxy S26 FE a 635€ con coupon ...
Tesla porta il Cybercab in Cina, ma solo...
I modelli di OpenAI mentono e si nascond...
Rivoluzione in arrivo per il Game Pass? ...
Lefant V1 torna a 99€: scopa elettrica s...
L'FBI sequestra NightmareStresser: centi...
Copilot sparisce da Outlook classico dop...
DEEPOWER Fat Bike 20'': la e-bike con ba...
Sam Altman a Dreamforce 2026, OpenAI ver...
Volkswagen ID.3 GTI: la GTI elettrica pi...
Google Pixel: 110 vulnerabilità chiuse c...
Il co-inventore di ChatGPT lancia un mod...
NvpwrControl: un tool sblocca il limite ...
Samsung torna in gioco: potrebbe produrr...
Cina, boom di film girati dall'IA: 128 m...
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: 09:22.


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