|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
27-06-2007, 01.39.24 | #1 |
Newbie
Registrato: 18-04-2007
Messaggi: 15
|
[c] expected declaration or statement at end of input
Qualcuno sa perchè??? éun progetto che devo consegnare a brevissimo Codice:
#include <getopt.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <stdlib.h> #include <mcheck.h> #include <math.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #define BUF (100*(sizeof(char))) signed char a,b,c; char dati[BUF+1]; int j,uguaglianza,letti,fd,ciclinumeri,numerostringhe,senzaparametri; int stringainizialepresente=0; int i = 1; int dollarocomecarattere=0; char* stringa; char* stringainiziale; char* provvisoria; char* provvisoria2={'\0'}; int terminale; int terminaletrovato=0; char carattere; typedef struct strutt1 { char* nomesimbolo; struct struttura1* simbolo; struct struttura2* sequenza; }struttura1; typedef struct strutt2 { struct struttura2* altrisimboli; struct struttura3* simbolireali; }struttura2; typedef struct strutt3 { struct struttura3* altroreale; char* nometerminale; int terminale; int opzionale; }struttura3; int main(int argc,char* argv[]) { provvisoria=calloc(1,sizeof(char)*2); if(provvisoria==NULL) { perror("errore in assegnazione di memoria calloc\n"); exit(errno); } while (i<argc) { c=*argv[i]; if(c=='-') { if(senzaparametri==1) { perror("inserita parametro o sequenza di parametri errata\n"); exit(errno); } a=*((argv[i])+sizeof(char)); if(isdigit(a)&&(i==1)) { numerostringhe=strlen(argv[i]); stringa=calloc(1,(sizeof(char))*numerostringhe-1); if(stringa==NULL) { perror("errore in allocazione di memoria calloc\n"); exit(errno); } for(ciclinumeri=1;ciclinumeri<numerostringhe;ciclinumeri=ciclinumeri+1) { b=*((argv[i])+((sizeof(char))*ciclinumeri)); if (!isdigit(b)) { perror("inserito numero con carattere non consentito\n"); exit(errno); } stringa[ciclinumeri-1]=b; } printf(stringa);//da togliere e inserire di prendere la sotosttringa dei numeri e salvarla su una variabile intera con atoi } else { if((a=='s')&&((i==1)||(i==2))) { if(argv[i+1]!=NULL) { stringainiziale=argv[i+1]; ; stringainizialepresente=1; i=i+1; } else { perror("manca il simbolo iniziale\n"); exit(errno); } } else { perror("parametro sconosciuto\n"); exit(errno); } } } else { fd=open(argv[i],O_RDONLY); if(fd == -1) { perror("errore aprendo il file\n"); exit(errno); } while((letti=read(fd,dati,BUF)>0))//magari aumetare un po' la dimenzione dei byte da leggere { if(letti==-1) { perror("errore in lettura\n"); exit(errno); } leggi(dati); } //quando arriva a 0 è alla fine del file senzaparametri=1; } i=i+1; } return 0; } int leggi(char* dati) { for(j=0;j<BUF;j=j+sizeof(char)) { carattere=dati[j]; //gestione stringa iniziale if((carattere=='$')&&(dollarocomecarattere==0)) { dollarocomecarattere=1; } if((carattere=='=')&&(uguaglianza==2)) { terminale=1; provvisoria2=""; } if((carattere==' ')||(dati[j]=='\n')) { if((terminale==0)&&(dollarocomecarattere==1)&&(terminaletrovato==0)) { if(dollarocomecarattere==1) { if(stringainizialepresente==0) { if((strcmp(provvisoria2,""))!=0) { stringainiziale=provvisoria2; } else { perror("simbolo iniziale non identificabile\n"); exit(errno); } } //inserisco in lista1 provvisoria2 dollarocomecarattere=0; terminaletrovato=1; provvisoria2=""; } else { perror("mancanza del carattere $ all'inizio del simbolo\n"); exit(errno); } } else if((terminale==1)&&(terminaletrovato==1)) { if(strcmp(provvisoria2,"")==0) { j=j+1; } else { //inserisco in lista3 if(dollarocomecarattere==1) { //non è un vero terminale } else { //lo è } } } } else { if((carattere==':')&&(terminaletrovato==1)) { if(uguaglianza==0) { uguaglianza=1; } else if(uguaglianza==1) { uguaglianza=2; } else { uguaglianza=0; } } provvisoria[0]=dati[j]; provvisoria[1]='\0'; strcat(provvisoria2,provvisoria); } return 1; } |
27-06-2007, 01.50.41 | #2 |
Young Promise
Registrato: 04-02-2006
Messaggi: 2.114
|
C'è una parentesi aperta senza essere chiusa nella funzione leggi... anche se non so dirti qual'è... a questa tarda ora non riesco a fare tanti ragionamenti (comunque per te dovrebbe essere facile capire qual'è)
|
27-06-2007, 01.54.37 | #3 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
A occhio e croce a riga 237 va chiusa la parentesi dell'else In pratica lì vanno chiusi l'else e il for che inizia a riga 153, ma c'è una sola parentesi di chiusura
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
HPING e tools sicurezza | NS-1 | Sicurezza&Privacy | 18 | 31-03-2007 16.54.40 |
[Suse] vedere un dvd | aelfar | Linux e altri Sistemi Operativi | 9 | 19-02-2007 23.06.27 |
[*buntu] Problemi con MP3 e Java [Risolto] | Dr_House | Linux e altri Sistemi Operativi | 5 | 22-08-2006 21.11.44 |
[ansi c] ricevere input durante un ciclo senza bloccarlo | Gergio | Programmazione | 2 | 22-03-2005 01.39.51 |
Problema con qtparted | Nanri | Linux e altri Sistemi Operativi | 11 | 06-05-2004 16.38.27 |