C text variable
-
Liebe Community,
vor kurzer zeit habe ich mich entschlossen mal ein bischen mit programmieren anzufangen und kam natürlich sofort zu c.
Das Kapitel Variablen hat mich besonders fasziniert, uns so kam mir doch gleich die idee ein einfaches(zu dem zeitpunkt glaubte ich noch es währe einfach)cmd programm zu schreiben...
Es sollte so aussehen: Der Benutzer schreibt "beispiel.com" und bekommt dann automatisch die IP geliefert. Also im prinzip wie im cmd
ping beispiel.comaber irgendwie will das mit der text variable bei mit nicht klappen
, deswegen bitte ich euch zur Hilfe
bis jetzt habe ich:#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x printf("Addresse hier eingeben:\n"); scanf("%x"); fflush(stdin); system("ping %x"); system("PAUSE"); return 0; }
Achja bin ich hier überhaupt im richtigen forum?
sry wenn nichtSmeili
-
Das ist alles Andere als einfach
Um die IP zu bekommen, solltest du dich mit Sockets auseinandersetzen, ich glaube aber, dass dir das im Moment noch zu viel ist.
-
echt ok danke ich dachte mit dem commandpropmt ginge das so schön...
kann ich hier irgendwie screenshots hochladen um zu zeigen was ich meine?
-
Wir wissen was du meinst, aber versuche doch erstmal deine Grundlagen zu festigen.
-
inwiefern? also was ich kann was ich hab oder was ich will?
-
Wenn ich deinen Code so ansehe wundere ich mich, wie du einen string in ein int bekommen willt. Dann die falsche Verwendung von scanf und die falsche Verwendung von system. Daran sieht man klar, dass du nicht viel von programmieren verstehst und du lieber erstmal an solchen Sachen arbeiteten solltest. Das mit Ping und system ist eh mehr oder weniger unwichtig und würde in Realität nie so gemacht.
-
ok
-
Mach doch den klassischen weg:
"Hallo Welt!" ausgeben, "Hallo Welt!" mehrmals in einer Schleife ausgeben, Namen eingeben und dann "Hallo Namen".
Wenn du das erfolgreich gemacht hast, kann es auch mit deinem ping klappen.
-
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char x[100]="ping -n 1 ", y[50]; printf("Addresse hier eingeben:\n"); fgets( y,50,stdin ); system(strcat(x,y)); system("PAUSE"); return 0; }
Sollte für Windows erstmal funktionieren, für weitere Auswertungen deiner system-Ausgabe kannst du diese z.B. in eine Datei umleiten ( mit ">datei.txt" ) und dann daraus lesen.
-
danke für die vielen antworten werd das jetzt erstma ausprobieren
-
@Wutz: Das kann doch wohl nicht dein Ernst sein. ping spawnen, in Datei schreiben, dann die parsen? Viel umständlicher kriegt man das nicht hin, und ich halte es für brandgefährlich, derart dreckige Fummeleien gerade Anfängern als Lösungsmöglichkeit vorzuführen.
Ganz direkt für Windows:
#include <winsock2.h> #include <stdio.h> #include <string.h> int main(void) { WSADATA wsa; struct hostent *p; char s[256]; WSAStartup(MAKEWORD(2, 2), &wsa); printf("Adresse: "); fgets(s, 256, stdin); s[strlen(s) - 1] = '\0'; /* Zeilenumbruch abschneiden */ p = gethostbyname(s); if(p != NULL) { printf("%d.%d.%d.%d\n", (unsigned char) p->h_addr[0], (unsigned char) p->h_addr[1], (unsigned char) p->h_addr[2], (unsigned char) p->h_addr[3]); } else { fputs("Fehler!\n", stderr); } WSACleanup(); return 0; }
und ws2_32.lib dazulinken (MSVC: Projekteinstellungen -> Konfigurationseigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten)
Unter BSD-Systemen (d.h. allen, die das BSD 4.3-API erfüllen, also allen kontemporären Unices) geht das nahezu genauso, nur heißt es da statt winsock2.h netdb.h, und WSAStartup und WSACleanup entfallen ersatzlos. Eine ws2_32-Bibliothek gibt es da natürlich nicht dazuzulinken; wo sich gethostbyname befindet, kann systemabhängig sein. Auf GNU-Systemen (beispielsweise Linux) befindet sie sich in der libc, also muss weiter nichts dazugelinkt werden.