Oppure

Loading
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;
}

aaa
27/03/05 11:10
pierotofy
Se magari mi dici che tipo di errore ti ritorna, forse evito di cercare l'errore in tutto il codice ;)
Il mio blog: piero.dev
27/03/05 12:41
joker_
Piero ho risolto, per? l'ho fatto di nuovo
Posto, poi carico il mio lavoro nella sezione C/C++

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>

#define NOME_FILE "uc.bin"
#define ERRORE_USCITA "C\'? un solo utente connesso"

int verificaIp(char* IPTmp);

struct strDati {
char ipUtente[80];
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[]) {

char* ipUtenteTmp=getenv("REMOTE_ADDR";); // "127.0.0.1";
int oraAccessoTmp=time('Piero ho risolto, per? l'ho fatto di nuovo
Posto, poi carico il mio lavoro nella sezione C/C++

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>

#define NOME_FILE "uc.bin"
#define ERRORE_USCITA "C\'? un solo utente connesso"

int verificaIp(char* IPTmp);

struct strDati {
char ipUtente[80];
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[]) {

char* ipUtenteTmp=getenv("REMOTE_ADDR";); // "127.0.0.1";
int oraAccessoTmp=time('{parsed_message}');

impoUtenti* Lista=(impoUtenti*)malloc(sizeof(impoUtenti));
impoUtenti* cLista=Lista;

printf("content-type:text/html\n\n";);
if(!ipUtenteTmp) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}

fp=fopen(NOME_FILE, "rb";);

if(fp==NULL) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}

while(!feof(fp)) {

fread(Lista, sizeof(impoUtenti), 1, fp);

if(verificaIp(Lista->impoUtente.ipUtente)) {
strcpy(Lista->impoUtente.ipUtente, Lista->impoUtente.ipUtente);
if(!strcmp(Lista->impoUtente.ipUtente, ipUtenteTmp)) {
Lista->impoUtente.oraAccesso=oraAccessoTmp;
verificaUtente=1;
}
else {
Lista->impoUtente.oraAccesso=Lista->impoUtente.oraAccesso;
}


if(!feof(fp)) {
Lista->pStesso=(impoUtenti*)malloc(sizeof(impoUtenti));
Lista=Lista->pStesso;
}
else {
Lista->pStesso=NULL;
}
}
else {
Lista->pStesso=NULL;
}

}

fclose(fp);

if(!verificaUtente) {
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
}

Lista=cLista;
fp=NULL;
fp=fopen(NOME_FILE, "wb";);


while(Lista!=NULL) {
if(Lista->impoUtente.oraAccesso>(oraAccessoTmp-600)&& verificaIp(Lista->impoUtente.ipUtente)) {
fwrite(Lista, sizeof(impoUtenti), 1, fp);
contaUtenti++;
}
Lista=Lista->pStesso;
}

fclose(fp);

if(contaUtenti>1) {
printf("Utenti connessi %d", contaUtenti);
}
else {
printf("C\'? un solo utente connesso";);
}

Lista=cLista;
liberaMemoria(Lista);
// system("pause";);
return 0;
}

// verifica ip
int verificaIp(char* IPTmp) {
int contaPunti=0;
int x=0;

for(x=0; IPTmp[x]; x++) {
if(IPTmp[x]=='.') {
contaPunti++;
}
}

if(contaPunti==3) {
return 1;
}
else {
return 0;
}
}

// libera memoria
void liberaMemoria(impoUtenti* pTmp) {
impoUtenti* tLista;

while(pTmp!=NULL) {
tLista=pTmp->pStesso;
free(pTmp);
pTmp=tLista;
}

}

:rotfl:');

impoUtenti* Lista=(impoUtenti*)malloc(sizeof(impoUtenti));
impoUtenti* cLista=Lista;

printf("content-type:text/html\n\n";);
if(!ipUtenteTmp) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}

fp=fopen(NOME_FILE, "rb";);

if(fp==NULL) {
printf("%s", ERRORE_USCITA);
free(Lista);
exit(1);
}

while(!feof(fp)) {

fread(Lista, sizeof(impoUtenti), 1, fp);

if(verificaIp(Lista->impoUtente.ipUtente)) {
strcpy(Lista->impoUtente.ipUtente, Lista->impoUtente.ipUtente);
if(!strcmp(Lista->impoUtente.ipUtente, ipUtenteTmp)) {
Lista->impoUtente.oraAccesso=oraAccessoTmp;
verificaUtente=1;
}
else {
Lista->impoUtente.oraAccesso=Lista->impoUtente.oraAccesso;
}


if(!feof(fp)) {
Lista->pStesso=(impoUtenti*)malloc(sizeof(impoUtenti));
Lista=Lista->pStesso;
}
else {
Lista->pStesso=NULL;
}
}
else {
Lista->pStesso=NULL;
}

}

fclose(fp);

if(!verificaUtente) {
strcpy(Lista->impoUtente.ipUtente, ipUtenteTmp);
Lista->impoUtente.oraAccesso=oraAccessoTmp;
Lista->pStesso=NULL;
}

Lista=cLista;
fp=NULL;
fp=fopen(NOME_FILE, "wb";);


while(Lista!=NULL) {
if(Lista->impoUtente.oraAccesso>(oraAccessoTmp-600)&& verificaIp(Lista->impoUtente.ipUtente)) {
fwrite(Lista, sizeof(impoUtenti), 1, fp);
contaUtenti++;
}
Lista=Lista->pStesso;
}

fclose(fp);

if(contaUtenti>1) {
printf("Utenti connessi %d", contaUtenti);
}
else {
printf("C\'? un solo utente connesso";);
}

Lista=cLista;
liberaMemoria(Lista);
// system("pause";);
return 0;
}

// verifica ip
int verificaIp(char* IPTmp) {
int contaPunti=0;
int x=0;

for(x=0; IPTmp[x]; x++) {
if(IPTmp[x]=='.') {
contaPunti++;
}
}

if(contaPunti==3) {
return 1;
}
else {
return 0;
}
}

// libera memoria
void liberaMemoria(impoUtenti* pTmp) {
impoUtenti* tLista;

while(pTmp!=NULL) {
tLista=pTmp->pStesso;
free(pTmp);
pTmp=tLista;
}

}

:rotfl:
aaa
27/03/05 14:24
netarrow
aaa
27/03/05 15:53
joker_
si sono C232 su HTML.it
aaa
27/03/05 15:53
joker_
ma bastava vedere l'email per capirlo
aaa
27/03/05 18:18
pierotofy
:asd:
Il mio blog: piero.dev
27/03/05 20:10
netarrow
su html.it la mail non si vede
aaa