Naja, der Hauptvorteil von C++ ist eben Crossplattform.
Ich habe in der Schule immer Konsolenanwendungen erstellt, testweise dann auch mal einige Codes in Linux mit gcc compiled und siehe da: es liefen fast alle problemlos und auf anhieb.
Funktioniert dein "Ursprungscode" schon?
das "&" bei bspw scanf("%s", &username); bewirkt, dass der Funktion die Speicheradresse übergeben wird.
Ich gehe stark davon aus, dass scanf den eingelesenen Wert (%s = String ?) in die Speicheradresse schreibt. Es wird also keine Kopie der Variable "username" erstellt.
Demnach könntest du nachdem du einen account erstellt hast und dich einloggst eine Willkommensnachricht senden:
void login()
{
... login erfolgreich
printf("Willkommen " +username);
...
}
Oder beim registrieren:
void register ()
{
... registrierung erfolgreich
printf("\nRegistration Successful!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Accountname: \t" +username+"\n Passwort: \t" +password);
main();
...
}
Ausgabe wäre dann:
Registration Successful!
Accountname: a
Passwort: 3
Also falls das wirklich so ist muss der compiler einen Fehler ausgeben, spätestens wenn du zwei Zeichen eingibst stürzt das Programm aber ab.
Problem: scanf denkt er hat die Speicheradresse eines String, ein String ist immer mindestens um ein byte länger als ein Char. -> Speicherzugriffsfehler.
PS: Die gekürzte Version wird natürlich nicht funktionieren.