Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-04-2010, 16:37   #1
alderaan79
Junior Member
 
Iscritto dal: May 2006
Messaggi: 13
[C] problema lettura da file

Ciao a tutti,
sto facendo un progetto in C e ho un problema nella lettura da file.
Il contenuto del file è il seguente:

new U 5 9 25.6875
?
new F 2 4 198.5000
?
new E 4 7 55.4375
kaboom U
?
!

deve leggere riga per riga identificando new, ?, kaboom e ! come comandi per eseguire le relative funzioni.

Il mio main è il seguente:

int main (int argc, char *argv[]){
FILE *p;
int i;
char name;
int part, fin;
float alt, risp;
crea();
if(argc<2){;}
else{
p=fopen(argv[1], "r");
if(p == NULL){
perror("Errore apertura file");
exit(1);
}
}
printf("NEW NEW YORK\n\n");
while(p != NULL){
char tmp[8];
while(fgets(tmp, 2, p) != "!"){
if((fgets(tmp, 3, p) != '\0') || (strcmp(tmp, "new"))){
fscanf(p, " %c %d %d %f", &name, &part, &fin, &alt);
printf("\n%c %d %d %f\n\n", name, part, fin, alt);
inserisci(name, part, fin, alt);
}
if((fgets(tmp, 1, p) != '\0') || (strcmp(tmp, "?"))){
risp=skyline();
printf("\nSkyLine: %f\n", risp);
fgets(tmp, 3, p)== NULL;
}

if((fgets(tmp, 6, p) != '\0') || (strcmp(tmp, "kaboom"))){
fscanf(p, "%c", &name);
elimina(name);
fgets(tmp, 3, p)== NULL;

}
fclose(p);
printf("\n");
system("PAUSE");
return 0;
}

}
}

il problema è che non cicla nel modo corretto nel senso che legge il primo new e svolge correttamente la funzione collegata, legge il primo ? e svolge correttamente la funzione collegata ma poi ignora i successivi new e ? per considerare, invece, correttamente il comando kaboom e il comando !.
Qualcuno può cortesemente spiegarmi dove sbaglio?
Grazie millle
alderaan79 è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 18:01   #2
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
1. usa il tag per inserire codice
2. indenta il codice
3. il regolamento vieta di chiedere la risoluzione di progetti per esami universitari


...cmq....prendendo dal K&R...

char *fgets(char *s, int size, FILE *stream);

fgets() reads a line from the stream and stores it inside the *s buffer.
fgets() reads, in the best case, (size-1) characters if it doesn't reach a '\n' or EOF character, and puts a '\0' character as a last character of the buffer.

mi chiedo quindi come fai a immagazzinare il carattere '?' in un buffer che può tenere solo il carattere '\0'.

poi imho non ha logica confrontare un puntatore a caratteri, qual'è il valore restituito dalla funzione, con un carattere;
così come non ha senso una valutazione cortocirtuitata in un if dove il primo argomento è (quasi) sempre true.

Quote:
Originariamente inviato da alderaan79 Guarda i messaggi
while(fgets(tmp, 2, p) != "!")
if((fgets(tmp, 3, p) != '\0') || (strcmp(tmp, "new")))
if((fgets(tmp, 1, p) != '\0') || (strcmp(tmp, "?")))
if((fgets(tmp, 6, p) != '\0') || (strcmp(tmp, "kaboom")))
ps: un consiglio....studia C prima di dare l'esame...
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2010, 18:01   #3
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
però metti il codice tra i tag CODE, altrimenti così è poco leggibile.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Formula E svela la stagione dei record: ...
Premiate le miglior innovazioni nel supe...
Autopromotec Dialogues: a Milano abbiamo...
Google Pixel 10 Pro crolla a 699€ in off...
I primi computer quantistici utili a liv...
Washington punta il dito contro ASML: se...
Data center, IA e rinnovabili: cos&igrav...
Doppia memoria, doppia potenza: la GeFor...
Il Galaxy S26 FE sta arrivando ma non av...
Lenovo Idea Tab Plus in offerta al Prime...
Hisense: il Prime Day sorprende con un T...
Reolink apre il Prime Day 2026 con scont...
Android 17 sui Pixel con qualche intoppo...
Prime Day, le offerte per i giocatori: M...
Una Tesla Model 3 sfonda una casa e ucci...
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: 23:31.


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