Tastatureingabe nur bis Leerzeichen - netsend Bombe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Tastatureingabe nur bis Leerzeichen - netsend Bombe

    hallo leute,

    ich bin noch blutiger anfänger in sachen C... jedenfalls wollte ich mal zum üben eine net send bombe basteln, bei der der benutzer eingeben kann, an welche IP die message soll, welcher text verschickt werden soll und wie oft. funktioniert auch alles super, aber er verschickt immer nur das erste wort eines satzes den man schreibt. (bei hallo du da sendet er nur hallo). habe rausgefunden, dass schon etwas bei der eingabe von sText nicht richtig läuft...

    hier mal der quell code :

    Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main ()
    4. {
    5. int iAnzahl;
    6. int iX;
    7. char sText[255];
    8. char sZeile[1024];
    9. char sHost[32];
    10. printf ("Net Send Bombe | ********** © | 2006\n");
    11. printf ("=========================================\n\n");
    12. printf ("Mit diesem Programm koennt Ihr Net Send Messages versenden!\n");
    13. printf ("Einfach die IP-Adresse, die Nachricht und die Anzahl der Nachrichten eingeben!\n");
    14. printf ("Es sind leider keine Leerzeichen verfuegbar! Bitte anders trennen, z.B. durch _ \n\n");
    15. printf ("\n...Weiter mit beliebiger Taste...");
    16. getchar();
    17. system ("cls");
    18. printf ("Bitte die IP-Adresse eingeben!\n\n");
    19. scanf ("%s" , &sHost);
    20. system ("cls");
    21. printf ("Jetzt den Text eingeben!\n\n");
    22. scanf("%s", &sText);
    23. system ("cls");
    24. printf ("Jetzt noch eingeben, wie oft die Message versendet werden soll!\n\n");
    25. scanf ("%i" , &iAnzahl);
    26. for (iX = 0 ; iX < iAnzahl ; iX++)
    27. {
    28. sprintf (sZeile, "net send %s %s", sHost, sText);
    29. system (sZeile);
    30. }
    31. fflush(stdin);
    32. getchar();
    33. }
    Alles anzeigen


    danke schon mal :)
    -C ist auch ne Sprache-
  • ja, das liegt daran, dass scanf auf alle whitespaces reagiert
    also zeilenumbruch, leerzeichen, tabs, ...
    Mit Return beendet man zwar die Eingabe, aber es wird nur der Inhalt bis zum ersten Whitespace an die Variable übergeben. Der Rest bleibt im Eingabepuffer
    für tastatureingaben ist die funktion also nicht unbedingt geeignet

    benutze dafür die funktion gets(string var)