Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Appian World 2025: AI agent e processi, un connubio perfetto
Appian World 2025: AI agent e processi, un connubio perfetto
Dalla visione del CEO Matt Calkins alla concretezza della piattaforma: ad Appian World 2025 prende forma un modello di intelligenza artificiale agentica, governata e integrata nei processi, nel segno della trasparenza e della conformità all’AI Act. Nel video, le interviste a Andrew Cunje (CISO) e Americo Mazzotta (VP EMEA) approfondiscono sicurezza e strategia europea.
Recensione realme 14 5G: il campione della batteria con fotocamera AI
Recensione realme 14 5G: il campione della batteria con fotocamera AI
Il realme 14 5G si distingue come "Long Battery Champ with AI Camera", offrendo una batteria da 6000mAh con autonomia eccezionale, il primo processore Snapdragon 6 Gen 4 al mondo, fotocamera da 50MP con OIS e funzionalità AI avanzate, display AMOLED a 120Hz e certificazione IP69.
MSI Vector 16 HX AI A2XW: GeForce RTX 5080 in un notebook
MSI Vector 16 HX AI A2XW: GeForce RTX 5080 in un notebook
Il nuovo notebook MSI Vector 16 HX AI A2XW abbina un processore Intel Core Ultra 9 275HX ad una scheda video NVDIIA GeForce RTX 5080, mettendo a disposizione una potenza di elaborazione elevatissima utile non solo per giocare al massimo ma anche per garantire produttività con ogni applicazione. Un notebook gaming che può essere anche macchina da lavoro facilmente trasporabile in ogni ambiente.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-09-2004, 17:04   #1
fant3
Senior Member
 
L'Avatar di fant3
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1360
[C] Lettura e scrittura di File Testo

Salve ragazzi.
Sto scrivendo un semplice algoritmo ed in esso devo leggere delle stringhe da tastiera, memorizzarle in un file testo e poi ristamparle a video.
Per memorizzare le stringhe ho usato il codice seguente:
-----------------------------------------------------------------------
for(i=0;i<n;i++)
{
printf("Inserisci la stringa numero %d:\n", i+1);
while((ch=getchar()) != EOF)
fprintf(fp,"%c", ch);
}
----------------------------------------------------------------------

Però non riesco a trovare il modo di leggere da questo file. Ho provato in molti modi ma ottengo solo una à. Il file l'ho aperto con il comando a+ in modo da poterci appendere e leggere.
Aspetto vostre illuminazioni...
fant3 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 17:38   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53970
Fammi capire...ma il file se lo apri con notepad come lo vedi ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 17:39   #3
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8878
aspè che ci provo anchio dato che devo imparare a leggere i file di testo

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 18:12   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16209
Re: [C] Lettura e scrittura di File Testo

Quote:
Originariamente inviato da fant3
Per memorizzare le stringhe ho usato il codice seguente:
-----------------------------------------------------------------------
for(i=0;i<n;i++)
{
printf("Inserisci la stringa numero %d:\n", i+1);
while((ch=getchar()) != EOF)
fprintf(fp,"%c", ch);
}
----------------------------------------------------------------------
usare una *printf per scrivere un singolo carattere...
Codice:
fputc(ch,fp);
Ah: la fine della riga e' proprio un EOF (Ctrl+D sotto Linux)? Tieni conto che, comunque, quando premi Invio viene inserito un newline, quindi anche questo dovrebbe funzionare:
Codice:
printf("Inserisci la stringa numero %d:\n", i+1);
while (1) {
    fputc(fp,(ch=getchar()));
    if (ch=='\n') break;
}
A proposito: ch e' un char o un int?
Se vuoi potergli assegnare il valore EOF, deve essere int.
Quote:
Però non riesco a trovare il modo di leggere da questo file. Ho provato in molti modi ma ottengo solo una à. Il file l'ho aperto con il comando a+ in modo da poterci appendere e leggere.
Se provi a leggere dal file dopo aver finito di scriverci su, leggi la sua fine.
Esegui una rewind(fp) tra il momento in cui scrivi l'ultimo carattere e quello in cui provi a leggere il file.
Per leggere... beh, guarda che leggere righe di testo di lunghezza arbitraria non e' facile come sembra... puoi stampare tutto il file semplicemente leggendolo un carattere alla volta, e stampando il carattere appena letto.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 18:44   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53970
Io eviterei l'uso di EOF...ma userei feof...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 19:09   #6
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8878
orca sbaglio qualcosa nella letterura

Codice:
while (!feof(fp)){
		fgets (&x, 1, fp);
		printf ("%c", x);
	}
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 20:08   #7
fant3
Senior Member
 
L'Avatar di fant3
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1360
Re: Re: [C] Lettura e scrittura di File Testo

Quote:
Originariamente inviato da Ziosilvio

Codice:
printf("Inserisci la stringa numero %d:\n", i+1);
while (1) {
    fputc(fp,(ch=getchar()));
    if (ch=='\n') break;
}
Allora rispondo con ordine:
>Cionci:
-Se apro il file testo creato ci sono i caratteri che immetto quindi li scrive bene.
-Scusa l'ignoranza ma cosa cambia fra eof e feof?

>ZioSilvio:
-Perchè non usare la fprintf? Che problemi porterebbe?
-ch l'ho dichiarato come intero.
-Nel tuo codice sopra riportato la fputc mi sembra che abbia i parametri al contrario.

Comunque l'esercizio mi chiede di usare le funzioni fscanf, fprintf, getc e putc.
fant3 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 20:51   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53970
Lo standard prevede di usare feof...e questo vuol dire che il metodo con EOF possa non funzionare con tutti is sitemi operativi...

feof è una funzione... che prende come parametro un FILE * e ritorna un numero diverso da 0 se è stata raggiunta la fine del file...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 20:56   #9
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16209
Re: Re: Re: [C] Lettura e scrittura di File Testo

Quote:
Originariamente inviato da fant3
-Perchè non usare la fprintf? Che problemi porterebbe?
fprintf è una funzione di uso generale, con un codice complesso; fputc è una funzione di uso specifico, con un codice semplice.
Se fai molte chiamate, usare fputc anziché fprintf velocizza il programma.
Quote:
-ch l'ho dichiarato come intero.
Benissimo; vuol dire che hai capito come si usa EOF.
Quote:
-Nel tuo codice sopra riportato la fputc mi sembra che abbia i parametri al contrario.
Vero! Dovrebbe essere:
Codice:
fputc((ch=getchar()),fp);
L'avevo pure ricontrollata due volte nella man page...
Mi sa che sto diventando e
Chiedo scusa.
Quote:
Comunque l'esercizio mi chiede di usare le funzioni fscanf, fprintf, getc e putc.
Ah, allora la tua chiamata a fprintf va bene.
Hai più provato a mettere rewind prima delle fscanf? Dà ancora quell'output strano?
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10

Ultima modifica di Ziosilvio : 06-09-2004 alle 21:03.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 21:00   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53970
Giusto se apri con a+t: fseek(f, 0, SEEK_SET);
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 21:00   #11
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16209
Quote:
Originariamente inviato da cionci
Lo standard prevede di usare feof...e questo vuol dire che il metodo con EOF possa non funzionare con tutti is sitemi operativi...
OK, ma il K&R dice che fgetc (quindi anche le sue varianti getc e getchar), se incontra la fine del file, restituisce EOF.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 21:03   #12
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16209
Quote:
Originariamente inviato da cionci
Giusto se apri con a+t: fseek(f, 0, SEEK_SET);
Peraltro, sempre il K&R dice che:
Codice:
rewind(fp);
equivale esattamente a:
Codice:
fseek(fp,0L,SEEK_SET);
clearerr(fp);
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 21:42   #13
fant3
Senior Member
 
L'Avatar di fant3
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1360
>Cionci:
L'apertura file a+t cosa produce?
Io ho usato la a+.

Per quanto riguarda le scrittura delle stringhe su file va bene poichè il file testo generato riporta quello che digito.
Ora non mi è molto chiaro il funzionamento della fscanf.
Ho provato il seguente codice ma di sicuro c'è qualcosa di sbagliato perchè mi restituisce "!!".
Ah ho inserito rewind fp fra le operazioni di lettura e scrittura ma non è quello il problema...o almeno non solo quello

-------------------------------------------------------------------
for(j=0;j<len;j++)
{
fscanf(fp, "&d", &s);
putchar(s);
}
-------------------------------------------------------------------
s è un intero

con len indico la lunghezza del file, ma ho un dubbio. E' corretto calcolare len in questo modo?

-------------------------------------------------------------------
len=0;
while((ch=getchar()) != EOF)
fprintf(fp,"%c", ch);
len++;
------------------------------------------------------------------

Qualcuno sa dove posso trovare qualche spiegazione sulla scanf perchè ho trovato poco sinora.

Ultima modifica di fant3 : 06-09-2004 alle 21:44.
fant3 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 23:07   #14
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16209
Quote:
Originariamente inviato da fant3
Ora non mi è molto chiaro il funzionamento della fscanf.
fscanf, il cui prototipo è:
Codice:
int fscanf(FILE *stream, const char *fmt, ...);
prende come argomento un puntatore a file, una stringa di formato, e una sequenza di puntatori.
fscanf(fp,fmt,arg1[,arg2,...]) legge dal file fp una sequenza di caratteri corrispondente alla stringa di formato fmt.
Ogni volta che in fmt c'è una sequenza del tipo "%t", legge la sequenza successiva come se fosse una rappresentazione di un oggetto di tipo t, e lo scrive nella zona di memoria puntata dall'argN corrispondente.
Per esempio:
Codice:
fscanf(stdin,"%d",&n);
legge dallo standard input una sequenza di caratteri che rappresenta un intero in notazione decimale, e lo scrive nella zona di memoria il cui indirizzo è quello della variabile n (in breve, nella variabile n): è il modo più immediato per inizializzare una variabile con un valore scelto dall'utente, anche se spesso non il migliore.
Quote:
Ho provato il seguente codice ma di sicuro c'è qualcosa di sbagliato perchè mi restituisce "!!".
Ah ho inserito rewind fp fra le operazioni di lettura e scrittura ma non è quello il problema...o almeno non solo quello

-------------------------------------------------------------------
for(j=0;j<len;j++)
{
fscanf(fp, "&d", &s);
putchar(s);
}
-------------------------------------------------------------------
s è un intero

con len indico la lunghezza del file, ma ho un dubbio. E' corretto calcolare len in questo modo?

-------------------------------------------------------------------
len=0;
while((ch=getchar()) != EOF)
fprintf(fp,"%c", ch);
len++;
------------------------------------------------------------------
Dunque... se ci fai caso, alla fine del ciclo con getchar, len vale sempre 1.
Devi racchiudere la fprintf e il len++ tra parentesi graffe.
In alternativa, puoi usare la forma idiomatica:
Codice:
 for (len=0; (ch=getchar()) != EOF; len++)
    fprintf(fp,"%c",ch);
La parte con la fscanf contiene una svista e un errore concettuale.
La svista è che i formattatori iniziano con % e non con &: così è come se tu gli avessi chiesto "leggi da fp un carattere & e un carattere d".
L'errore concettuale è che il formattatore %d significa una stringa che rappresenta un numero intero in notazione decimale, quindi una fscanf(pf,"%d",&s) comincia a leggere da fp un carattere dopo l'altro finché:
- o incontra una lettera, e allora capisce che c'è qualcosa che non va, rimette l'ultimo carattere letto al suo posto nel file, non altera il contenuto di s, e restituisce 0;
- oppure incontra una cifra, nel qual caso continua a leggere finché ci sono cifre, aggiorna il contenuto di s col valore che ha trovato, e restituisce 1.
Se, come ho capito, devi semplicemente stampare il file su schermo, una fscanf come la tua va bene, ma s deve essere di tipo char e il formattatore deve essere %c.
Quote:
Qualcuno sa dove posso trovare qualche spiegazione sulla scanf perchè ho trovato poco sinora.
Su un qualunque buon manuale di linguaggio C, per esempio il Kernighan&Ritchie, oppure il Deitel&Deitel.
E, naturalmente, nel manuale del compilatore (o nelle man pages di Linux).
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10

Ultima modifica di Ziosilvio : 06-09-2004 alle 23:12.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 23:50   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53970
Il K&R è un po' vecchio come manuale...
Io sinceramente non mi affiderei molto su EOF...poi fate vobis...

Riguardo al mettere la t dopo il modo di apertura (lo puoi fare per qualsiasi modalità):

t sta per text
b sta per binary

Il default è t, ma in teoria è possibile modificare la modalità di apertura di default...quindi se uno vuole essere sicuro è meglio specificare...

Ultima modifica di cionci : 06-09-2004 alle 23:53.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2004, 11:06   #16
fant3
Senior Member
 
L'Avatar di fant3
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1360
grazie ZioSilvio per i consigli.
Effettivamente ieri avevo confuso i % con & ed avevo mancato le graffe nel ciclo di scrittura....sarà stata l'ora tarda a farmi sbagliare
Ora va tutto bene, il file viene scritto e letto correttamente.
Visto che l'esercizio vuole il tutto sotto forma di function di tipo void. Ho provato passando cosi':
text(fp, &len, n)
void text(FILE *fp, int *dim, int n)

ma credo sia sbagliato perchè quando provo ad aprire manualmente il file testo c'è quello che scrivo, ma quando eseguo l'algoritmo non legge nulla. Forse sbaglio nel passaggio del file testo vero?

Ultima modifica di fant3 : 07-09-2004 alle 11:08.
fant3 è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2004, 11:29   #17
fant3
Senior Member
 
L'Avatar di fant3
 
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1360
Ok ragazzi ho risolto.

void text(FILE *fp, int *dim, int n)
text(fp, &len, n)

Prima non funzionava perchè non leggeva la lunghezza del file. Ho messo una variabile locale nella funzione che legge la lunghezza e poi alla fine la memorizza nel puntatore da passare al main.
Grazie a tutti per l'aiuto siete stati gentilisismi.
fant3 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Appian World 2025: AI agent e processi, un connubio perfetto Appian World 2025: AI agent e processi, un connu...
Recensione realme 14 5G: il campione della batteria con fotocamera AI Recensione realme 14 5G: il campione della batte...
MSI Vector 16 HX AI A2XW: GeForce RTX 5080 in un notebook MSI Vector 16 HX AI A2XW: GeForce RTX 5080 in un...
iPhone 16e: due mesi e più di 500 foto. Ecco cosa abbiamo capito  iPhone 16e: due mesi e più di 500 foto. E...
MSI BE6500: nuova chiavetta USB per abilitare il supporto al WiFi 7 su qualsiasi PC MSI BE6500: nuova chiavetta USB per abilitare il...
Acquisizione di Activision Blizzard da p...
100 TB entro il 2030: la scommessa di Se...
Imperdibili le scope elettriche oggi: 2 ...
Philips Evnia 25M2N5200U: monitor FHD a ...
C'è un portatile gaming ASUS TUF ...
AOC presenta il monitor U27G4R con tecno...
Il nuovo MacBook Air con chip M4 scende ...
Ampere Computing introduce silenziosamen...
Super offerte portatili: tuttofare Lenov...
Sony svela il suo nuovo studio Team LFG,...
Mitsubishi e Foxconn: in arrivo un nuovo...
Octopus Energy porta in Italia Intellige...
Amazon rivoluziona il packaging con imba...
3D X-DRAM, NEO Semiconductor prepara la ...
Synology DS925+ è ora ufficiale: ...
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: 07:36.


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