User pingen mithilfe von Dateien

angryolex

Cadet 2nd Year
Registriert
Nov. 2007
Beiträge
24
Hi,

ich habe ein projekt gestartet, komme aber net mehr weiter:

ich möchte jemanden pingen. Die Adresse steht in einer Datei mit dem namen des ziels. Bis hierhin ist alles gut, ich schreibe die ip per code in eine datei. Jetzt will ich die ip (als string?) aus der Datei abrufen und dann mit dem befehl "ping" kombinieren.

system("ping" + ip).c_str());

irgendwie so.
aber es funzt net.

Die datei:

Name: Peter
Inhalt: 192.168XXX
 
Code:
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;

int main() {
	ifstream in("ip.txt", ios::in);
	string line, ip;
	while( getline(in, line) ) {
		string::size_type loc = line.find("Inhalt"); // Zeile mit IP herausfiltern
		if(loc != string::npos) // "Inhalt" gefunden
			ip = line.substr(8); // "Inhalt: " wegschneiden -> bloße IP
	}
	string cmd = "ping " + ip;
	system(cmd.c_str() );
}
 
Bei deinem Beispiel hast du übrigens zwischen Ping und IP das Leerzeichen vergessen!
Nimm doch ne Zwischenvariable und lass dir den Befehl, den du ausführst, vorher anzeigen!
Hast du keinen Rückgabewert?

Gruß
 
zwischen Ping und IP das Leerzeichen vergessen
Nein, schau noch einmal genau hin.
Nimm doch ne Zwischenvariable und lass dir den Befehl, den du ausführst, vorher anzeigen!
Wieso denn? Ich bevorzuge Programme, die das, was man von ihnen erwartet, in aller Stille tuen und nicht dem User sämtlichen Variableninhalt mitteilen wollen.
Hast du keinen Rückgabewert?
Ein "return 0;" ist bei C++ implizit vorhanden bzw. es muss nicht ausdrücklich hingeschrieben werden.

Was man vllt. noch sinnvollerweise ergänzen könnte, wäre eine Programmbeendigung mit entsprechendem return-Code, falls die Datei nicht existiert/geöffnet werden kann.
 
moagnus schrieb:
Ein "return 0;" ist bei C++ implizit vorhanden bzw. es muss nicht ausdrücklich hingeschrieben werden.

bau mal eine int main() {} ohne return und kompilier dies im mingw. dort wirst du aufgefordert, ein return in main einzubauen. von daher blödsinn.
 
Also, wenn ich den Code (mit einer Leerzeile am Ende) mit "g++ -Wall return.cpp -o return" compiliere, gibts da keine Warnung.
Ein Blick in die C++ Annotations verrät:
It is possible to define int main() without an explicit return statement
http://www.icce.rug.nl/documents/cplusplus/cplusplus02.html#an104
Was wiederum nicht funktioniert, erfährt man, wenn man den zitierten Satz weiterliest...
Ich glaube ihr seid ein wenig in C verhaftet.
Des Weiteren ist ein "return 0;" nicht unbedingt die beste Wahl. Durch Einbinden der <cstdlib> erhält man die symbolischen Konstanten "EXIT_SUCCESS" und "EXIT_FAILURE", die von plattformabhängigen return-Codes abstrahieren.
 
Zuletzt bearbeitet:
hm ok, mit ner aktuellen mingw version gibts keine fehler mehr. hab vorher noch ne sehr alte drauf gehabt. ;)
 
Zurück
Oben