26/03/05 22:54
joker_
ragazzi ho creato un piccolo programma in C che rivela gli utenti connessi, ma c'? un problema di logica che non riesco a trovare:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>
#define NOME_FILE "uc.bin"
#define ERRORE_USCITA "Utenti connessi: 1"
struct strDati {
char ipUtente[20];
int oraAccesso;
};
typedef struct strContDati {
struct strDati impoUtente;
struct strContDati* pStesso;
} impoUtenti;
void liberaMemoria(impoUtenti*);
FILE* fp=NULL;
int contaUtenti=0;
int verificaUtente=0;
int main(int argc, char *argv[]) {
// dati necessari dell'utente
char* ipUtenteTmp="139.0.0.1"; //getenv("REMOTE_ADDR"
int oraAccessoTmp=time('ragazzi ho creato un piccolo programma in C che rivela gli utenti connessi, ma c'? un problema di logica che non riesco a trovare:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>
#define NOME_FILE "uc.bin"
#define ERRORE_USCITA "Utenti connessi: 1"
struct strDati {
char ipUtente[20];
int oraAccesso;
};
typedef struct strContDati {
struct strDati impoUtente;
struct strContDati* pStesso;
} impoUtenti;
void liberaMemoria(impoUtenti*);
FILE* fp=NULL;
int contaUtenti=0;
int verificaUtente=0;
int main(int argc, char *argv[]) {
// dati necessari dell'utente
char* ipUtenteTmp="139.0.0.1"; //getenv("REMOTE_ADDR"
int oraAccessoTmp=time('{parsed_message}');
impoUtenti* Lista=(impoUtenti*)malloc(sizeof(impoUte
nti));
impoUtenti* cLista=Lista;
printf("content-type:text/html\n\n"
// esci se non ci sono i dati necessari
if(!ipUtenteTmp) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if((fp=fopen(NOME_FILE, "rb")==NULL) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if(!feof(fp)) {
while(!feof(fp)) {
fread(Lista, sizeof(impoUtenti), 1, fp);
if(!strcmp(Lista->impoUtente.ipUtente, ipUtenteTmp)) {
Lista->impoUtente.oraAccesso=oraAccessoTmp;
verificaUtente=1;
}
if(!feof(fp)) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
} else {
Lista->pStesso=NULL;
}
}
} else {
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
verificaUtente=1;
}
if(!verificaUtente) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
}
fclose(fp);
Lista=cLista;
fp=NULL;
fp=fopen(NOME_FILE, "wb"
while(Lista!=NULL) {
if(Lista->impoUtente.oraAccesso>(oraAccessoTmp-6000)) {
fwrite(Lista, sizeof(impoUtenti), 1, fp);
contaUtenti++;
}
Lista=Lista->pStesso;
}
fclose(fp);
printf("Utenti connessi: %d", contaUtenti);
Lista=cLista;
liberaMemoria(Lista);
system("pause"
return 0;
}
void liberaMemoria(impoUtenti* pTmp) {
impoUtenti* tLista=NULL;
while(pTmp!=NULL) {
tLista=pTmp->pStesso;
free(pTmp);
pTmp=tLista;
}
return;
}
');
impoUtenti* Lista=(impoUtenti*)malloc(sizeof(impoUte
nti));
impoUtenti* cLista=Lista;
printf("content-type:text/html\n\n"
// esci se non ci sono i dati necessari
if(!ipUtenteTmp) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if((fp=fopen(NOME_FILE, "rb")==NULL) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if(!feof(fp)) {
while(!feof(fp)) {
fread(Lista, sizeof(impoUtenti), 1, fp);
if(!strcmp(Lista->impoUtente.ipUtente, ipUtenteTmp)) {
Lista->impoUtente.oraAccesso=oraAccessoTmp;
verificaUtente=1;
}
if(!feof(fp)) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
} else {
Lista->pStesso=NULL;
}
}
} else {
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
verificaUtente=1;
}
if(!verificaUtente) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
}
fclose(fp);
Lista=cLista;
fp=NULL;
fp=fopen(NOME_FILE, "wb"
while(Lista!=NULL) {
if(Lista->impoUtente.oraAccesso>(oraAccessoTmp-6000)) {
fwrite(Lista, sizeof(impoUtenti), 1, fp);
contaUtenti++;
}
Lista=Lista->pStesso;
}
fclose(fp);
printf("Utenti connessi: %d", contaUtenti);
Lista=cLista;
liberaMemoria(Lista);
system("pause"
return 0;
}
void liberaMemoria(impoUtenti* pTmp) {
impoUtenti* tLista=NULL;
while(pTmp!=NULL) {
tLista=pTmp->pStesso;
free(pTmp);
pTmp=tLista;
}
return;
}
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>
#define NOME_FILE "uc.bin"
#define ERRORE_USCITA "Utenti connessi: 1"
struct strDati {
char ipUtente[20];
int oraAccesso;
};
typedef struct strContDati {
struct strDati impoUtente;
struct strContDati* pStesso;
} impoUtenti;
void liberaMemoria(impoUtenti*);
FILE* fp=NULL;
int contaUtenti=0;
int verificaUtente=0;
int main(int argc, char *argv[]) {
// dati necessari dell'utente
char* ipUtenteTmp="139.0.0.1"; //getenv("REMOTE_ADDR"
int oraAccessoTmp=time('ragazzi ho creato un piccolo programma in C che rivela gli utenti connessi, ma c'? un problema di logica che non riesco a trovare:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>
#define NOME_FILE "uc.bin"
#define ERRORE_USCITA "Utenti connessi: 1"
struct strDati {
char ipUtente[20];
int oraAccesso;
};
typedef struct strContDati {
struct strDati impoUtente;
struct strContDati* pStesso;
} impoUtenti;
void liberaMemoria(impoUtenti*);
FILE* fp=NULL;
int contaUtenti=0;
int verificaUtente=0;
int main(int argc, char *argv[]) {
// dati necessari dell'utente
char* ipUtenteTmp="139.0.0.1"; //getenv("REMOTE_ADDR"
int oraAccessoTmp=time('{parsed_message}');
impoUtenti* Lista=(impoUtenti*)malloc(sizeof(impoUte
nti));
impoUtenti* cLista=Lista;
printf("content-type:text/html\n\n"
// esci se non ci sono i dati necessari
if(!ipUtenteTmp) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if((fp=fopen(NOME_FILE, "rb")==NULL) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if(!feof(fp)) {
while(!feof(fp)) {
fread(Lista, sizeof(impoUtenti), 1, fp);
if(!strcmp(Lista->impoUtente.ipUtente, ipUtenteTmp)) {
Lista->impoUtente.oraAccesso=oraAccessoTmp;
verificaUtente=1;
}
if(!feof(fp)) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
} else {
Lista->pStesso=NULL;
}
}
} else {
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
verificaUtente=1;
}
if(!verificaUtente) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
}
fclose(fp);
Lista=cLista;
fp=NULL;
fp=fopen(NOME_FILE, "wb"
while(Lista!=NULL) {
if(Lista->impoUtente.oraAccesso>(oraAccessoTmp-6000)) {
fwrite(Lista, sizeof(impoUtenti), 1, fp);
contaUtenti++;
}
Lista=Lista->pStesso;
}
fclose(fp);
printf("Utenti connessi: %d", contaUtenti);
Lista=cLista;
liberaMemoria(Lista);
system("pause"
return 0;
}
void liberaMemoria(impoUtenti* pTmp) {
impoUtenti* tLista=NULL;
while(pTmp!=NULL) {
tLista=pTmp->pStesso;
free(pTmp);
pTmp=tLista;
}
return;
}
');
impoUtenti* Lista=(impoUtenti*)malloc(sizeof(impoUte
nti));
impoUtenti* cLista=Lista;
printf("content-type:text/html\n\n"
// esci se non ci sono i dati necessari
if(!ipUtenteTmp) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if((fp=fopen(NOME_FILE, "rb")==NULL) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}
if(!feof(fp)) {
while(!feof(fp)) {
fread(Lista, sizeof(impoUtenti), 1, fp);
if(!strcmp(Lista->impoUtente.ipUtente, ipUtenteTmp)) {
Lista->impoUtente.oraAccesso=oraAccessoTmp;
verificaUtente=1;
}
if(!feof(fp)) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
} else {
Lista->pStesso=NULL;
}
}
} else {
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
verificaUtente=1;
}
if(!verificaUtente) {
Lista-> pStesso=(impoUtenti*)malloc(sizeof(impoU
tenti));
Lista=Lista->pStesso;
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
}
fclose(fp);
Lista=cLista;
fp=NULL;
fp=fopen(NOME_FILE, "wb"
while(Lista!=NULL) {
if(Lista->impoUtente.oraAccesso>(oraAccessoTmp-6000)) {
fwrite(Lista, sizeof(impoUtenti), 1, fp);
contaUtenti++;
}
Lista=Lista->pStesso;
}
fclose(fp);
printf("Utenti connessi: %d", contaUtenti);
Lista=cLista;
liberaMemoria(Lista);
system("pause"
return 0;
}
void liberaMemoria(impoUtenti* pTmp) {
impoUtenti* tLista=NULL;
while(pTmp!=NULL) {
tLista=pTmp->pStesso;
free(pTmp);
pTmp=tLista;
}
return;
}
aaa