View Full Version : [C]Non capisco il significato di queste righe di codice
Ciao, c'è un esempio per spiegare la scansione sequenziale nei file, ma non capisco una cosa
fine = 0;
LeggiIndex(fileindice, varix);
while (!fine && !feof(fileindice))
{if (varix.codicef == xx)
{lseek(filef, varix.posizione);
LeggiForn(filef, varf);
..... fine= 1;
}
LeggiIndex(fileindice, varix);
}
}
Non capisco la condizione del while
Se sapete aiutarmi
Grazie
Continua il ciclo finché fine == 0 E finché non siamo giunti alla fine del file (feof restituisce 0 se il file non è alla fine, un valore diverso da 0 altrimenti).
Ok, grazie, già che ci siamo mi dai una controllata anche a questo
#include <stdio.h>
#include <stddef.h>
#define MAX 10
void main()
{
char file1[MAX],file2[MAX];
int check=0,num1,num2;
FILE *fp1,*fp2;
printf("Nome file 1\n");
scanf("%s",file1);
printf("Nome file 2\n");
scanf("%s",file2);
if((fp1=fopen(file1,"r")==NULL) || (fp2=fopen(file2,"r"))==NULL) printf("Errore in apertura\n");
else{
rewind(fp1);
rewind(fp2);
while(!feof(fp1) || !feof(fp2) || !check)
{
fread(&num1,sizeof(int),1,fp1);
fread(&num2,sizeof(int),1,fp2);
if(num1!=num2)
check=1;
}
if(check==1)
printf("diversi\n");
else
printf("uguali\n");
}}
Dovrei aprire due file e controllare se il loro contenuto sia uguale, ma mi va in run time error e Visual C++ mi mostra una bella frecciona verde su rewind(fp2)
Grazie
Usi l'operatore di disgiunzione, se la prima condizione è soddisfatta evidentemente non esegue la seconda, così fp2 non è inizializzato. Ipotizzo eh, non conosco il C..
Prima di tutto assegna i valori e POI controllali. Il primo if dovrebbe essere:
fp1=fopen(file1,"r");
fp2=fopen(file2,"r");
if((fp1 == NULL) || (fp2 == NULL)) printf("Errore in apertura\n");
e poi sbagli la condizione del while. Non devi mettere gli or (||) ma gli and (&&) perché quelle condizioni devono essere TUTTE vere affinché continui l'esecuzione del ciclo.
Grazie, ora mi è venuto! Devo dare Informatica 1, quindi sicuramente avrò qualche altro esercizio che non mi viene, nel frattempo vi domando:
Abbiamo anche iniziato i processi e il prof ha detto che quello che ci spiegava si riferiva a Linux. quindi se uso windows la fork() la free() , execl(), etc.. non funzionano?
Up per me con una nuova domanda.
Sto esercitandomi con le liste e non capisco perchè il sottoprogramma che crea la lista viene scritto in questo modo
struct elemento *crea_lista()
e poi viene richiamato
struct elemnto *lista;
lista=crea_lista();
Mi spiegate perchè il nome di un sottoprogramma è già un puntatore?
Grazie
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.