|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 46
|
FILE *fp
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..
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
posta il codice che vediamo cosa sbagli nell'implementazione.
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 46
|
ok...grazie, pero la mia domanda e se si puo decrementare in..
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.. ciao |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
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 |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Codice:
#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
;}}
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 Ultima modifica di ilsensine : 24-10-2005 alle 12:50. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
mi avete chiamato?
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 46
|
grazie per la risposta e per i consigli...
per fare peggio dovevi vedere le cose che faccevo prima!! 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 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 |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il problema non è tanto nel codice, ma nel fatto che avrebbe dovuto essere così:
Codice:
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;
}
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 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. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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... |
|
|
|
|
|
#13 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 46
|
ok, grazie.
anche per il parere su goto.... ciao |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:35.



















