View Full Version : FILE *fp
telluccio
23-10-2005, 19:14
ciao a tutti,
gentilmente qualcuno mi spiega se e possibile incrementare o decrementare fp?
mi spiego...leggo un file binario dividendolo per stringhe..
while((c=getc(fp))!=EOF&&c!='\n')
il mio programma visualizza i dati a monitor , blocca e chiede istruzioni ogni '\n'.
e possibile decrementare fp...(--fp)..insomma da quello che ho capito FILE legge in sequenza da 0 a EOF incrementando e basta..almeno credo..
ho letto qualcosa su fseek() , ftell() e rewind() per impostare il punto in cui leggere o scrivere dati su file, ma non riesco ad usarle...
qualcuno ha la voglia di farmi capire?
ciao e comunque grazie.. :help:
Fenomeno85
23-10-2005, 19:53
posta il codice che vediamo cosa sbagli nell'implementazione.
~§~ Sempre E Solo Lei ~§~
telluccio
24-10-2005, 00:04
ok...grazie, pero la mia domanda e se si puo decrementare in..
:rolleyes: scusami lo preciso perche lo vorrei capire da solo...
start:while((c=getc(in))!=EOF&&c!='\n') {
putchar(c);++i;if(c=='\n'){n=i;break;}}
printf("\n1:continua\n2:indietro\n\n");
scanf("%d",&r);if(r==1)goto start;
else if(r==2){for(n;n<=i;n++)in--;goto start;}
e chiaramente non funziona come tutti i puntatori...almeno credo.. :mc:
ciao
ok...grazie, pero la mia domanda e se si puo decrementare in..
:rolleyes: scusami lo preciso perche lo vorrei capire da solo...
start:while((c=getc(in))!=EOF&&c!='\n') {
putchar(c);++i;if(c=='\n'){n=i;break;}}
printf("\n1:continua\n2:indietro\n\n");
scanf("%d",&r);if(r==1)goto start;
else if(r==2){for(n;n<=i;n++)in--;goto start;}
e chiaramente non funziona come tutti i puntatori...almeno credo.. :mc:
ciao
Per tornare indietro di 1 carattere nel file devi usare fseek (fp, -1, SEEK_CUR);.
In ogni caso impara ad identare. Usa tab e spazi che sono gratis. Dai dei nomi significativi alle variabili. Ma sopratutto non usare goto.
ciao ;)
start:while((c=getc(in))!=EOF&&c!='\n') {
putchar(c);++i;if(c=='\n'){n=i;break;}}
printf("\n1:continua\n2:indietro\n\n");
scanf("%d",&r);if(r==1)goto start;
else if(r==2){for(n;n<=i;n++)in--;goto start;}
http://dotnetjunkies.com/WebLog/images/dotnetjunkies_com/sdhebert/1179/t_coding_horror.PNG
ilsensine
24-10-2005, 12:48
http://dotnetjunkies.com/WebLog/images/dotnetjunkies_com/sdhebert/1179/t_coding_horror.PNG
Sai fare di peggio? :D
#define m(i)(x[i]^s[i+84])<<
unsigned char x[5] ,y,s[2048];main(
n){for( read(0,x,5 );read(0,s ,n=2048
); write(1 ,s,n) )if(s
[y=s [13]%8+20] /16%4 ==1 ){int
i=m( 1)17 ^256 +m(0) 8,k =m(2)
0,j= m(4) 17^ m(3) 9^k* 2-k%8
^8,a =0,c =26;for (s[y] -=16;
--c;j *=2)a= a*2^i& 1,i=i /2^j&1
<<24;for(j= 127; ++j<n;c=c>
y)
c
+=y=i^i/8^i>>4^i>>12,
i=i>>8^y<<17,a^=a>>14,y=a^a*8^a<<6,a=a
>>8^y<<9,k=s[j],k ="7Wo~'G_\216"[k
&7]+2^"cr3sfw6v;*k+>/n."[k>>4]*2^k*257/
8,s[j]=k^(k&k*2&34)*6^c+~y
;}}
(da http://www.cs.cmu.edu/~dst/DeCSS/Gallery/ )
Sai fare di peggio? :D
Neppure impegnandomi! :D
telluccio
24-10-2005, 13:37
grazie per la risposta e per i consigli...
per fare peggio dovevi vedere le cose che faccevo prima!! :D
comunque mi spezzo una lancia...
il codice l ho scritto direttamente sul post senza provarlo, come esempio per ottenere una risposta( e l'ho avuta)...e poi io non ho o non ho avuto un prof che mi ha spiegato come tanti...e poi considerando che "programmo" da solo 8 mesi..insomma :Prrr:
quindi se dennis ritchie legge questo post ed e interessato ad assumermi come collaboratore puo contattarmi tramite mail.
no perditempo o anonimi
scherzo grazie a tutti :cool:
Il problema non è tanto nel codice, ma nel fatto che avrebbe dovuto essere così:
start:
while( (c = getc(in)) != EOF && c != '\n')
{
putchar(c);
++i;
if(c == '\n')
{
n = i;
break;
}
}
printf("\n1:continua\n2:indietro\n\n");
scanf("%d", &r);
if(r == 1)
goto start;
else if(r == 2)
{
for(n; n <= i; n++)
in--;
goto start;
}
Altro appunto: sebbene il goto faccia parte della sintassi del linguaggio, è sconsigliatissimo...
telluccio
24-10-2005, 17:46
dite giusto...disordino cosi ,forse perche per ora faccio piccoli programmi e nel mio disordine "capisco"...(un po)
cerco di imparare dal web e con "il linguaggio c ANSI"...e come anche voi tutti sconsigliano goto...
se vi va , spiegate il motivo??
da novizio: secondo me e figo , pratico e puo diminuire cicli.
:) sempre grazie, ciao.
Perchè sembra di programmare in Basic... Il C ha cercato di riportare ordine nei goto selvaggi che si usavano in Basic... Il goto rende complicato il debug e rende più difficile seguire mentalmente la struttura del programma...
Quasi sempre il goto può essere sostituito con un do while accompagnato dalle istruzioni di continue e break...
Perchè sembra di programmare in Basic... Il C ha cercato di riportare ordine nei goto selvaggi che si usavano in Basic... Il goto rende complicato il debug e rende più difficile seguire mentalmente la struttura del programma...
Quasi sempre il goto può essere sostituito con un do while accompagnato dalle istruzioni di continue e break... esatto, in altre parole il goto è sconsigliatissimo per questioni di eleganza e leggibilità, e la leggibilità implica la manutenibilità; per il resto, cioè dal punto di vista funzionale, il goto di per se' non avrebbe problemi, ma nel 2005 un sorgente con le etichette e i goto fa schifo :Puke:
telluccio
24-10-2005, 21:59
ok, grazie.
anche per il parere su goto.... :cool:
ciao
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.