Newsgroup: it.comp.lang.c
Titolo: Aiutino su 2 programmini su stringhe.

Salve.
Sono un nuovo utente di questo gruppo.
Ho avuto un progetto con 2 esercizi su stringhe.
Non sono molto esperto del C.
Qualcuno di voi mi puņ aiutare?
Esercizio 1:
programma che consenta di inserire da tastiera un testo e che rimandi
in output lo stesso testo, avendo trasformato la prima lettera di ogni
parola in maiuscolo (utilizzare le funzioni getchar e putchar e le
funzioni definite in ctype.h)
Esercizio 2:
programma che legga da tastiera delle stringhe, le scriva su un file
di testo e stampi, infine, il contenuto del testo (Utilizzare le
funzioni fopen, fclose, fscanf, fprintf, getc, putc)
Molte grazie

 funzioni fopen, fclose, fscanf, fprintf, getc, putc)
Qui hai già tutti i mattoni fondamentali: vedi sul manuale cosa fa ognuna
delle funzioni elencate e cerca di capire come puoi combinarle nel
programma richiesto.
Non è detto che tu debba utilizzarle tutte: personalmente, per scrivere il
programma che hai descritto userei solo quattro delle sei funzioni
elencate.
Entrambi i programmi devono ripetere più volte le stesse operazioni di
input (e conseguente output): suppongo che tu conosca già le istruzioni di
ripetizione "while" e "for". Se no, cercale nell'indice del manuale.
Per le funzioni di lettura (scanf, fscanf, getc) assicurati di aver ben
capito come si rileva la condizione di fine file.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 funzione scanf.
E' il modo pessimo di leggere una stringa.
Molto meglio usare fgets().


 Non sono molto esperto del C.
E direi che gli esercizi sono adeguati.
Dai, evitiamo la manfrina degli "aiutini" sugli esercizi, non è serio.
Tanto più che sono talmente piccoli che se qualcuno niente niente fa 
qualcosa per aiutarti, ti da direttamente la soluzione.

 Molto meglio usare fgets().
Lui non ha detto che deve leggere una "stringa". Ha detto che deve
leggere una PAROLA (leggasi: sequenza di caratteri composta da
caratteri X tali che !isspace(X) è vera, e di conseguenza delimitata
da caratteri Y tali che isspace(Y) è vera).
IL modo (non "un" modo) di fare questo in C è:
scanf("%s", ...
È ovvio che ci sono dodicimila altri modi (ma usare fgets() NON è uno
di questi, perché questa funziona non lavora per "parole" ma per
"righe") ma questo è irrilevante quando si parla con uno che sta
studiando i rudimenti del C.
Infine, un'opinioni personale: eventuali antipatie per la scanf() o per
qualsiasi altro pezzo del linguaggio C li definisco con il termine
tecnico "cazzata tonante".
--
Cingar

 tecnico "cazzata tonante".
E "sti cazzi" ?
Nessuna persona sana di mente userebbe scanf() o sue varianti, in
un'applicazione seria.  Se scrivi applicazioni giocattolo puoi anche usare
la paperinof().  E poi, perché non accetteresti critiche a "qualsiasi
altro pezzo del linguaggio C" ? per quale motivo ?, nessun linguaggio č
perfetto, men che meno il C.


 applicazioni serie [...]
Personalmente non lo credo.
Ti riporto, a titolo d'esempio, un pezzettino delle FAQ di comp.lang.c:
12.20:	Why does everyone say not to use scanf()?  What should I use
	instead?
A:	scanf() has a number of problems.  Usually, it's easier to read
	entire lines and then interpret them.


 	entire lines and then interpret them.
Cosa ho scritto nel mio post?  In certi contesti e` vero quello che 
dici, ma trovo assurdo demonizzare una funzione utilissima.


 dici, ma trovo assurdo demonizzare una funzione utilissima.
scanf() sarà anche utile, ma come dice una fonte autorevole "ha un certo
numero di problemi" ed io ne sconsiglio personalmente l'utilizzo per
applicazioni critiche.  Su comp.lang.c (il ng americano) si è parlato
spesso di questa funzione e dei perché non andrebbe utilizzata.  L'input è
una di quelle operazioni che richiede sempre un filtraggio stretto, per
problemi di affidabilità e sicurezza.  E' quindi _molto_ meglio leggere
un'intera riga e procedere alla sua interpretazione, come ho detto
inizialmente.
