Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-07-2010, 14:45   #1
blu1988
Member
 
Iscritto dal: May 2010
Messaggi: 42
[C]errore apertura file!

Codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXLEN 10+2
#define MAX 255
typedef struct elenco_s elenco_t;

struct elenco_s{
       char stato;
       char sesso;
       int id;
       int day;
       int h;
       elenco_t *next; 
       };


elenco_t*load(FILE*);
elenco_t*NewE();
void check(elenco_t*);




main(){

FILE*fp;
elenco_t *elenco;     
char nomef[MAX];   
       
printf("Inserire nome file con soci>");       
scanf("%s",nomef);
//open&check
fp=fopen(nomef,"r");
       if(fp==NULL){
          printf("errore apertura file");          
          exit(1);          
                    }
elenco=load(fp);
fclose(fp);
check(elenco);
       
       
       
       }
       
       
       //funzioni
       
       //newE
elenco_t*NewE(){
elenco_t*tmp;

tmp=(elenco_t*)malloc(1*sizeof(elenco_t));
if(tmp==NULL){
   printf("errore allocazione");
   exit(1);
              }
  return(tmp);     
                
                }
       //load         
elenco_t*load(FILE* fp){
                      
char buff[MAXLEN];  
char stato,sesso;
int id,day,h;
elenco_t*p;
elenco_t*head=NULL;  
  
  while(fgets(buff,MAXLEN,fp)!=NULL){
        sscanf(buff,"%c:%c%d:%d:%d",&stato,&sesso,&id,&day,&h);   
        
        p=NewE();
        
        p->stato=stato;
        p->sesso=sesso;
        p->id=id;
        p->day=day;
        p->h=h;
        p->next=head;
        head=p;
        }                         
return(head);
}
                      

//check

void check(elenco_t*elenco){
     
elenco_t*p;

p=elenco;

while(p!=NULL){
      printf("stato=%c\nsesso=%c\nid=%d\nday=%d\nh=%d\n,p->stato,p->sesso,p->id,p->day,p->h");
      p=p->next;}         
               
               
               }
ciao a tutti...vorrei sapere perchè quando inserisco il nome del file che deve leggermi e caricarmi in lista mi da errore apertura file(che sarebbe il comando che mi stampa quando fp==NULL)...dove sbaglio?


ps
es file inserito

E:M123:1:7\n
U:M123:1:7\n
blu1988 è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 16:23   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
immagino che tu ti sia accertato che il file esista, quindi: il nome del file contiene degli spazi? scanf("%s", ..) legge fino allo spazio, puoi usare gets al suo posto
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 16:34   #3
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
Ti propongo questa alternativa:

Codice:
if((fp=fopen(nomef,"r"))==NULL){
    fprintf(stderr,"Errore nell'apertura del file %s",nomef);
    exit(EXIT_FAILURE);
}
Ricordati che il c è case sensitive..cmq nella tua acquisizione non mi sembrava ci fossero errori
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 17:26   #4
blu1988
Member
 
Iscritto dal: May 2010
Messaggi: 42
nessuno spazio...non so davvero perchè mi dia questo errore....il fatto è che me lo da sia su codeblocks che su dev...quindi penso sia qualcosa nel codice...il nome del mio file è in.txt...ma questo mi capita con il 90% dei programmi che scrivo!!
blu1988 è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 18:50   #5
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
Quote:
Originariamente inviato da blu1988 Guarda i messaggi
nessuno spazio...non so davvero perchè mi dia questo errore....il fatto è che me lo da sia su codeblocks che su dev...quindi penso sia qualcosa nel codice...il nome del mio file è in.txt...ma questo mi capita con il 90% dei programmi che scrivo!!
Ecco il tuo errore...sai qnt volte l'ho fatto pure io..

ERRATO
Codice:
scanf("%s",nomef);
CORRETTO
Codice:
printf("Inserire nome file con soci>");
scanf("%s",&nomef);
//open&check
if((fp=fopen(nomef,"r"))==NULL){
    fprintf(stderr,"Errore apertura file %s",nomef);
    exit(EXIT_FAILURE);
}
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 19:11   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
nomef è già un puntatore, non serve usare l'operatore &.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 19:25   #7
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da ciusss89 Guarda i messaggi
Ecco il tuo errore...sai qnt volte l'ho fatto pure io..

ERRATO
Codice:
scanf("%s",nomef);
CORRETTO
Codice:
printf("Inserire nome file con soci>");
scanf("%s",&nomef);
//open&check
if((fp=fopen(nomef,"r"))==NULL){
    fprintf(stderr,"Errore apertura file %s",nomef);
    exit(EXIT_FAILURE);
}
e continui a farlo :x
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 19:34   #8
Rsk
Senior Member
 
L'Avatar di Rsk
 
Iscritto dal: Dec 2006
Messaggi: 314
Quote:
Originariamente inviato da blu1988 Guarda i messaggi
[code]
Sei sicuro di aver inserito il nome del file con tanto di estensione?
Il file risiede nella directory del progetto?
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB
Rsk è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 20:34   #9
ciusss89
Senior Member
 
L'Avatar di ciusss89
 
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
Quote:
Originariamente inviato da cionci Guarda i messaggi
nomef è già un puntatore, non serve usare l'operatore &.
Mi scuso per la cazzata...suggerita..sto semplicemente impazzendo...
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...
Vendo : ROUTER STATION PRO, SISTEMA EMEDDED.
ciusss89 è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2010, 23:27   #10
Isildur84
Member
 
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
La butto lì, non insultarmi. Non è che usi windows e hai nascosto le estensioni dei file conosciuti? In questo modo il file che tu pensi si chiami file.txt in realtà si chiama file.txt.txt.
Isildur84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
ASUS porta in Italia il nuovo Zenbook Du...
Assassin's Creed: Black Flag Resynced, s...
Xbox Game Pass cambierà: tra le n...
I nuovi Surface Pro e Laptop sono vicini...
OnePlus ci riprova con la fascia bassa: ...
La Top 10 delle offerte Amazon del weeke...
XGIMI MoGo 2 Pro a 339€: Google TV con N...
Forum IT & Intelligence 2026: dall'A...
iPhone 16e per la prima volta a meno di ...
Stop Killing Games: Ross Scott convince ...
Annunciata la tuta di volo di Vast che s...
Vast presenta il nuovo Large Docking Ada...
Una denuncia getta ombre sulle batterie ...
DJI Avata 2 Fly Smart Combo a 526€: il d...
Alla guida della nuova auto elettrica ci...
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: 13:04.


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