Deine Methode mit dem ProcessBuilder sollte auch unter nahezu jeder unixoiden Shell funktionieren, naürlich mit anderem Kommando:

new ProcessBuilder("sh", "-c", "clear") ...

Allerdings ist das ein absoluter Overkill und auch der Ansatz mit den Escapesequenzen genau genommen totaler Pfusch.

Am besten, du liest dich in die Java-Bindings von ncurses ein. Da gibts diverse Bibliotheken und google wird dir dabei weiter helfen!

Aber für den Anfang, kannst du es ja mit dem ProcessBuilder versuchen. :)

...zur Antwort

Silbentrennung ist Sprachspezifisch und ein Software (z. B. ein Editor oder DTP-Programm) hat für jede Sprache ein Modul, welches bestimmte Grundregeln enthält, und eine Liste von Ausnahmen.

Zum Beispiel wird im Deutschen zwischen zwei gleichen Konsonanten getrennt:

Tit-
ten

Pim-
mel

Meistens ist genau definiert, was eine "Silbe" ist und dazwischen wird auch getrennt.

Aber weil das von Sprache zu Sprache extrem unterschiedlich ist, gibt es - wie gesagt - für jede Sprache ein eigenes Modul. :)

...zur Antwort

Du nimmst eine beliebige Malware-Datei (zum Beispiel irgendeine *.exe oder *.docx aus dem Anhang einer Spammail), zippst diese zum Beispiel als foo.zip und hängst diese an eine *.gif Datei ran.

Alle anderen Bildformate funktionieren auch, aber laut GIF-Spezifikation ist ein Anhängen von Mülldaten sogar legitim.

ZIP-Dateien haben den "Vorteil", dass sie nicht mit Headern, sondern mit Trailern arbeiten, und ebenfalls Mülldaten davor angefügt werden dürfen.

Das heißt, eine Datei die mit einem GIF-Bild anfängt, und mit einer ZIP-Datei endet, ist immernoch sowohl ein gültiges Bild, als auch ein gültiges Archiv.

Da Windows dumm ist, und sich an Dateiendungen orientiert, wird das Bild im Browser, dem Bildbetrachter, oder jeder beliebigen Anwendung einfach so angezeigt, aber ein Antivirenprogramm wird die Datei prüfen und den ZIP-Anhang finden, in dem eine Malware enthalten ist, und dem Benutzer melden, dass die Datei in Quarantäne verschoben und gerade sein Leben gerettet wurde.

Eine andere Möglichkeit besteht darin, in eine beliebige Datei (vorzugsweise eine unformatierte Textdatei) folgenden Inhalt zu schreiben:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Wenn du wissen willst, wie das funktioniert, google mal nach "EICAR".

Das funktioniert aber nur mäßig, weil die meisten Antivirenprogramme so etwas wie "Not a Virus" oder "Testvirus" ausgeben.

Naja, egal ... viel Spaß beim rumblödeln! ;)

...zur Antwort

De sauberste Lösung ab C++17 sähe so aus:

constexpr auto len { 5ul };
int arr[len] {};

Die zweitsauberste Lösung, die man oft verwendet, wenn man mit Templates hantiert, geht so:

#include <type_traits> // extent

// ...

int arr[5] {};

using namespace ::std;
cout << extent<decltype(arr)>() << endl;

Die uralte C-Lösung, die heute auch noch oft verwendet wird, sieht so aus:

int arr[5] {};
cout << (sizeof(arr) / sizeof(*arr)) << endl;

Das ist natürlich völlig OK, wenn du in C programmierst, aber fehleranfällig, weshalb du bei C++ ::std::extent nehmen solltest. Das hat den Vorteil, dass du eine schöne Fehlermeldung bekommst, falls der Typ nicht stimmt.

Alles in allem solltest du bei C++ grundsätzlich auf - oft einfacher wirkende - Herangehensweisen aus C verzichten, weil C an einfach zu vielen Stellen quasi keine Typsicherheit kennt. (void-Zeiger, Format-Strings, Varargs, Preprozessor-Magie, uvm.)

Von daher: Gewöhne dir die Nutzung von extent an ... und nebenbei auch allen anderen Dingen, die du im <type_traits> Header findest. (Da dich das momentan aber alles noch überfordern würde, lerne erst mal die Grundlagen fertig und guck dir das genanannte in einem halben Jahr ruhig mal an!)

Viel Spaß! :)

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.