Bez. priv. Nachricht:
Wegen deinem Codestück:
ip ist erstens einmal EIN String, kein Stringarray.
mit ip[0] etc greife ich auf die Einzelnen Zeichen zu.
In der ersten Anweisung radiere ich den aktuellen Inhalt von ip raus-es bleibt ein leerer String, der bis zu 64 Zeichen aufnehmen kann.
Anw2:Aus der Datei wird eine Zeile eingelesen (die IPs stehn ja zeilenweise drinnen) und in ip gespeichert. Falls die aktuelle Zeile länger als 64 Zeichen ist (sollte für eine IP eigentlich reichen, und ip kann eben max. soviel aufnehmen), wird der Rest einfach abgeschnitten.
Über 64 Zeichen ist es sowieso keine gültige IP, da ist der Rest auch schon egal.
Anw3:
eim einlesen macht die genannte Funktion selber ein '\0' zum Schluss, um das Stringende zu markieren.
Falls wirklich 64 Zeichen erreicht wurdenund etwas abgeschnitten wurde, war ich mir nicht sicher, ob fgets das mit der '\0' wohl ordentlich macht, also habs ichs halt selber nocheinmal im Code: Das letzte verfügbare Zeichen von ip wird auf '\0' gesetzt.
Falls das gleiche '\0' nicht schon vorher vorkommt, "merken" die anderen Sachen, die den String danach brauchen, spätestens hier, dass Schluss ist.
Anweisung4: Fällt mir gerade auf dass das nicht so toll ist, sicherer ists so...
Code:
if (ip[0]!='\0'&&ip[ strlen( ip ) - 1 ] == '\n' )
ip[ strlen( ip ) - 1 ] = '\0';
fgets hängt nämlich, wenn es die Zeile fertig eingelesen hat, auch noch gern '\n' ins ip rein, dass in einer Datei quasi ein Zeilenwechsel ist. Eingelesen bei der IP kann man das aber nicht mehr brauchen
dh wenn überhaupt was in ip drin ist und das letzte Zeichen ein Zeilenwechsel ist, kommt der weg, indem der String einfach um eins gekürzt wird.
Und wegen deiner anderen Frage: Poste den betreffenden Code bitte einmal, ich hab keine Ahnung um welche Stelle es da geht.