quinte17
30-06-2003, 18:14
ich habe hier folgenden codeabschnitt aufzurufen mit:
#define MAXLENG 100
#include <stdio.h>
#include <strings.h>
int main()
{
char ip[] = {"222.222.222.222"};
char name[] = {"ww17.kicks-ass.net"};
check_ipcache_new(ip,name);
return 0;
}
int check_ipcache_new(char *newip, char *hostname)
{
char str[MAXLENG+1] = "\0";
char ipaddr[MAXLENG+1] = "\0";
char dir[] = {"/var/dyndnsupdate/"};
FILE *infile;
int isthesame;
// HIER IST ipaddr noch ok
printf("1 %s %s\n",str,ipaddr);
if ((infile = fopen(strcat(dir,hostname),"r")) == NULL)
{
printf("2 %s %s\n",str,ipaddr);
return 0;
}
else
{
// HIER WIRD DES KOMISCHE IN ipaddr AUSGEGEBEN
printf("3 %s - %s - %s\n",str,ipaddr,hostname);
fgets(str, MAXLENG, infile);
printf("4 %s %s\n",str,ipaddr);
strcat(ipaddr, str);
fclose(infile);
}
isthesame = strcmp(ipaddr, newip);
printf("5 %d \"%s\" \"%s\"\n",isthesame,ipaddr,newip);
if (isthesame>0)
{
return 1;
}
else
{
return 0;
}
}
wenn die funktion gestartet wird dann gibt sie im moment folgendes aus:
1
3 - .net - ww17.kicks-ass.net
4 217.228.215.250 .net
5 -4 ".net217.228.215.250" "217.228.215.250"
wie zu sehen ist ist plötzlich in der variable ipaddress ".net" als zeichenfolge drin...
übergeben wir in newip ein char array der art: 217.228.215.250
und in hostname: ww17.kicks-ass.net
kann mir wer auf die sprünge helfen? ich bekomms einfach nicht ganz bugfrei ;(
ich vermute, dass der strcat schuld an der misere ist... aber sicher bin ich mir da nicht...
vielen dank schoneinmal im vorraus!!!!!!
mfg
[EDIT]noch ein nachtrag:
die file /var/dyndnsupdate/ww17.kicks-ass.net sollte die ip als zeichenfolge beinhalten... sonst kommt er gar nicht so weit [EDIT]
#define MAXLENG 100
#include <stdio.h>
#include <strings.h>
int main()
{
char ip[] = {"222.222.222.222"};
char name[] = {"ww17.kicks-ass.net"};
check_ipcache_new(ip,name);
return 0;
}
int check_ipcache_new(char *newip, char *hostname)
{
char str[MAXLENG+1] = "\0";
char ipaddr[MAXLENG+1] = "\0";
char dir[] = {"/var/dyndnsupdate/"};
FILE *infile;
int isthesame;
// HIER IST ipaddr noch ok
printf("1 %s %s\n",str,ipaddr);
if ((infile = fopen(strcat(dir,hostname),"r")) == NULL)
{
printf("2 %s %s\n",str,ipaddr);
return 0;
}
else
{
// HIER WIRD DES KOMISCHE IN ipaddr AUSGEGEBEN
printf("3 %s - %s - %s\n",str,ipaddr,hostname);
fgets(str, MAXLENG, infile);
printf("4 %s %s\n",str,ipaddr);
strcat(ipaddr, str);
fclose(infile);
}
isthesame = strcmp(ipaddr, newip);
printf("5 %d \"%s\" \"%s\"\n",isthesame,ipaddr,newip);
if (isthesame>0)
{
return 1;
}
else
{
return 0;
}
}
wenn die funktion gestartet wird dann gibt sie im moment folgendes aus:
1
3 - .net - ww17.kicks-ass.net
4 217.228.215.250 .net
5 -4 ".net217.228.215.250" "217.228.215.250"
wie zu sehen ist ist plötzlich in der variable ipaddress ".net" als zeichenfolge drin...
übergeben wir in newip ein char array der art: 217.228.215.250
und in hostname: ww17.kicks-ass.net
kann mir wer auf die sprünge helfen? ich bekomms einfach nicht ganz bugfrei ;(
ich vermute, dass der strcat schuld an der misere ist... aber sicher bin ich mir da nicht...
vielen dank schoneinmal im vorraus!!!!!!
mfg
[EDIT]noch ein nachtrag:
die file /var/dyndnsupdate/ww17.kicks-ass.net sollte die ip als zeichenfolge beinhalten... sonst kommt er gar nicht so weit [EDIT]