system() übergabe problem
-
char nachricht[101];
fgets(nachricht, 101, stdin);MfG
-
Wenn du unter Windows einen "Satz" schicken willst, musst du ihn in Hochkommas setzen:
net send 192.168.0.1 "Hallo Welt"
-
des is mir klar
dankeaber die scanf funktion ließt ja nach dem blank nicht weiter sondern sieht das blank als return
ich glaub nicht dass das so einfach zu umgehen ist oder doch??
-
Hat dir doch rocksteady eben geschrieben. Lies es mit fgets ein.
Wenn willst du mit dem Tool eigentlich ärgern??
-
Sorry hab ich überlesen
-
ahm
ihr könnt mich ja jetzt für blöd halten aber ich bring des net zum laufen
mit fgets net und mit gets ah net
wie muss denn die syntax für meinen fall genau lauten und vor allem an welcher stelle im code
danke
-
@Brain11
Nimm dir mal eine Doku über die C-Funktionen zur Hand oder diesen Link: http://www.cplusplus.com/ref/indexr.htmlDa steht drin, wie man es benutzt und für was es ist. Dann solltest du auch draufkommen wo du es in deinem Code einbauen musst.
Wenn du übrigens ein %s bei scanf() einliest und du ein Array angibst, dann darfst du das & nicht machen! Der Name des Arrays allein beinhaltet bereits die Adresse. Genauso verhält es sich bei fgets(), wie du bei rocksteadys Beitrag sehen kannst.
-
Dein Problem ist, dass fgets so lange liest, bis ein newline kommt. Dieses speichert fgets auch noch in den string. Da du diesen Zeilenumbruch aber nicht haben willst, musst du das letzte Zeichen, dass fgets eingelesen hat wieder überschreiben:
char Nachricht[100]; char Rechner[100]; printf("\nNachricht eingeben: "); fgets(Nachricht, 100, stdin); printf("\nRechner eingeben: "); fgets(Rechner, 100, stdin); Rechner[strlen(Rechner)-1] = '\0'; Nachricht[strlen(Nachricht)-1] = '\0';
Jetzt kannst du das ganze mit sprintf zu einem Ausgabe-String zusammenbauen und an system() übergeben.
-
@DarthZiu:
das '\0' zu setzen übernimmt doch das fgets...mfg (c)h
-
Jo, aber genau da ist das Problem:
Wenn du "Hallo Welt" einliest, sieht der String in etwa so aus:
[ H ][ a ][ l ][ l ][ o ][ ][ W ][ e ][ l ][ t ][ \n ][ \0 ]fgets speichert den Zeilenumbruch mit. Und den überschreib ich einfach mit noch einem '\0'. Das Array sieht dann so aus:
[ H ][ a ][ l ][ l ][ o ][ ][ W ][ e ][ l ][ t ][ \0 ][ \0 ]Und damit funzt es. Hab es selbst probiert.
-
und wenn mal kein '\n' da steht?
zB. wenn die 100 zeichen überschritten worden wären (wurde ja verhindert)... dann würde es das letzte zeichen löschen
-
hallo
also ich find es echt super dass ihr mir so gut helft
das ist meiner meinung nach aber nicht erforderlich (habs ausprobiert) Rechner[strlen(Rechner)-1] = '\0';
es geht aber auch mitso also jezt hab ich wie solls anders sein aber noch ein weiteres problem und zwar wenn ich das so schreibe:
printf("\nNachricht: "); fgets(nachricht,100,stdin); printf("\nComputername: "); scanf("%100s",&name); printf("\nAnzahl der Angriffe: "); scanf("%hd",&anzahl);
habi ich kein problem aber wenn ich das so machen taucht ein newline problem auf
printf("\nComputername: "); scanf("%100s",&name); printf("\nAnzahl der Angriffe: "); scanf("%hd",&anzahl); printf("\nNachricht: "); fgets(nachricht,100,stdin);
wie kann ich das verhindern???
Danke
-
@chille
Das stimmt schon. Aber wenn die 100 zeichen überschritten werden, ist eh was faul.
Aber damit du zufrieden bist (nur Spaß
):
Mann müsste natürlich noch abfragen, ob es sich um ein '\n' handelt, bevor man es überschreibt.
-
du übergibst ein die adresse eines (char*) was jedoch nicht nötig ist:
scanf("%100s",name);
lies aber bitte beide variablen mit fgets ein:
fgets(name,100,stdin);
weiters solltest du die \n wegstreichen - mal so zur vorsicht
was bedeutet eigendlich das h bei "%hd"?
mfG (c)h
-
hi
%hd bedeutet Ganze Zahl vom Typ short
so jetzt läuft der spaß
sogar mit einer funktion den nachrichtendienst auf wunsch nach dem senden der nachrichten zu deaktivieren
also nochmal danke für euere hilfe
-
-
dann nimm lieber bei der anzahl
"short int" -
habe mir dein programm rekonstruiert, aber das senden funktioniert nicht - ich hatte versucht an einen schulkollegen zu senden.
Wie sendet man korrekt (ich dachte: net send) über das internet eine Nachricht sodass diese sie auch empfängt?
Meldung: "Computer konnte nicht gefunden werden." -
nochwas zum thema - in unserem schulnetzwerk ist die datei net.exe gelöscht.. welche dll(s) benötige ich, um das programm zu rekonstruieren?
mfg (c)h
PS.: was ist mit (cmd-code):
msg
-
-
sorry dass ich jetzt erst antworte
schau dir mal den beitrag von C Kid sfprint frage an
http://www.c-plusplus.net/forum/viewtopic.php?t=98008
das bin ich mittlerweile und dort hab ich den ganzen code veröffentlich der in dem zustand allerdings noch nicht läuft
ich habe ihn zwar schon wunderbar am laufen gehabt aber jetzt wolte ich noch einen zähler einbauen um anzuzeigen wieviele nachrichten es sind aber das funzt noch nicht sodu brauchst auch keine net.exe sondern svchost.exe und dann sollte es laufen
C:\WINDOWS\System32\svchost.exe
ob man mit dem net send auch ins internet sendenkann weiß ich jetzt allerdings nicht