Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
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


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...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
NASA e Relativity Space uniscono le forz...
watchOS 27 non arriverà su modell...
Apple, definiti i piani per i chip futur...
Ancora tagli nel futuro di XBOX: il caso...
Samsung Galaxy S27, il compatto potrebbe...
Sempre più IA nei videogiochi: con PUBG ...
La NASA avrebbe fermato i lavori sul mod...
Mancano pochi giorni al lancio della mis...
Prime Day in anticipo, giorno 7: tempo d...
Lo smartphone HONOR con batteria da 11.0...
Amazfit Bip 5, Active 3 Premium e Balanc...
Xiaomi potrebbe portare i suoi Pro e Pro...
Crisi delle memorie: CMF annulla il pros...
La PS6 si farà attendere: il lanc...
OnePlus non sente la crisi delle memorie...
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: 04:48.


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