Tutorial: Fehler "Cannot edit in read-only editor" in VS Code beheben (C/C++)

Melden

Wenn du ein C- oder C++-Programm in Visual Studio Code schreibst und versuchst, Benutzereingaben (über scanf oder cin) zu machen, erhältst du oft die Fehlermeldung "Cannot edit in read-only editor".

Dieser Fehler tritt auf, weil VS Code die Programmausgabe standardmäßig im "Ausgabe"-Tab (Output) anzeigt. Dieser Bereich ist lediglich ein Log-Fenster und erlaubt keine Tastatureingaben. Um das Problem zu lösen, musst du VS Code so konfigurieren, dass das Programm im "Terminal" ausgeführt wird.

Hier sind die zwei gängigsten Lösungen:


Methode 1: Für Nutzer der Erweiterung "Code Runner" (Empfohlen)

Die meisten Nutzer verwenden die Erweiterung Code Runner, um ihren Code mit dem "Play"-Button oben rechts auszuführen.

  1. Öffne die Einstellungen in VS Code (unten links auf das Zahnrad klicken oder Strg + , drücken).
  2. Gib oben in die Suchleiste den Begriff "Run in Terminal" ein.
  3. Suche den Eintrag: Code-runner: Run In Terminal.
  4. Setze dort ein Häkchen.
  5. Wichtig: Starte VS Code zur Sicherheit neu oder schließe das aktuelle Ausgabefenster.

Wenn du jetzt auf den Play-Button klickst, öffnet sich das Programm unten im Tab "Terminal". Dort kannst du deine Werte eingeben und mit Enter bestätigen.


Methode 2: Falls du den C/C++ Debugger nutzt (launch.json)

Wenn du nicht Code Runner nutzt, sondern den eingebauten Debugger (F5), musst du die Konfigurationsdatei anpassen.

  1. Gehe in den Ordner .vscode in deinem Projektverzeichnis.
  2. Öffne die Datei launch.json.
  3. Suche nach dem Eintrag "externalConsole": false,.
  4. Ändere diesen Wert auf "externalConsole": true, (dadurch öffnet sich ein eigenes Windows-Konsolenfenster).
  5. Alternativ: Suche nach "console": "internalConsole" und ändere es zu "console": "integratedTerminal".

Warum passiert das überhaupt?

  • Ausgabe-Tab (Output): Dies ist nur ein Textstream. VS Code schreibt hier hinein, was dein Programm ausgibt. Es gibt jedoch keinen Rückkanal für deine Tastatur.
  • Terminal: Dies ist eine echte Konsole (wie die CMD oder PowerShell). Hier wird ein interaktiver Prozess gestartet, der sowohl Daten senden (Ausgabe) als auch empfangen (Eingabe) kann.

Zusammenfassung

Der schnellste Weg ist fast immer: Einstellungen -> "Code-runner: Run In Terminal" aktivieren. Damit lassen sich C- und C++-Programme problemlos interaktiv bedienen.

0