WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   c progamm (http://www.wcm.at/forum/showthread.php?t=183948)

Smokey 25.01.2006 17:51

c progamm
 
die funktion funktioniert wenn ich sie einmal aufrufe..

sobald sie aber zwei mal aufgerufen wird gibts einen speicherzugriffsfehler.

hat irgendwer eine ahnung woran das liegen könnte?

mfg smokey

PHP-Code:

int checkip(char *ip)
{
int count=0;
int ts1ts2;
struct timeb ts;
FILE *logfile;
char *puffer;
char *iplog;
int ret=0;

logfile fopen("log.dat","r");

ftime(&ts); 

while (
fread(&puffer11logfile)>0)
{
    if(
strcmp(&puffer,":"))
        
strncat(iplog,&puffer,1);
        
    else
    {
        if(!
strcmp(iplog,ip))
        {    
            
fread(&puffer101logfile);
            break;
        }
        
//printf("Gesperrt");
    
strcpy(iplog,"");
    }
}

ts1 convint(&puffer);
ftime(&ts); 
ts2 ts.time;
ts1 ts2-ts1;

if(
ts1 1800)
ret=1;

fclose(logfile);
return 
ret;



helios 25.01.2006 18:15

wundert micht dass das überhaupt 1x geht. du verwendest lauter uninitialisierte pointer (iplog, puffer). einmal davon abgesehen dass du die pointer selber überschreibst.

pong 25.01.2006 19:17

Zitat:

hat irgendwer eine ahnung woran das liegen könnte?
Schonmal was von Grundinitialisierung gehört..... kannst nur froh über deinen Compiler sein, der das zumindest vor dem Erstaufruf für dich macht

pong

Biri 25.01.2006 20:03

ein lustiges programm + interessant, dass überhaupt was funktioniert. :D
sorry.

vor dem lesen von daten in die bereiche
char *puffer;
char *iplog;
würde es sich empfehlen, entsprechenden speicher zu alokieren (anzulegen).

char *irgendwas erzeugt einen pointer im char-format, also eine variable, welche die adresse eines speicherbereiches enthalten kann.
Genau diesen speicherbereich musst du zuvor jedoch anlegen.

statisch: char meinspeicher[50];
dynamisch mit "malloc" (syntax weiß ich jetzt net auswendig.

fg
-hannes

Smokey 25.01.2006 20:10

so das probier ich gleich mal aus...

sorry kann mit pointern einfach ned.... es lebe die objekt orientierte sprache ^^

Smokey 25.01.2006 22:41

habs geändert!

funktioniert jetzt kann also geschlossen werden

und nochmal danke an alle

Biri 25.01.2006 23:38

hi,

schön, dass nun funktioniert!

btw. c++ ist z.B. eine objektorientierte sprache + hat pointer.
c# ebenfalls, jedoch nur in "unsafe" bereichen.

fg
-hannes


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag