Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Speicherzugriffsfehler in C++ (stdio.h - scanf())?

Das ist mein Programm:

#include <stdio.h>

int main(void)

{

char *test;

scanf("%s", test);

if(test == "Hallo")

printf("Du hast Hallo geschrieben");

return 0;

}

Wenn ich es kompiliere (g++) und ausführe und etwas eingebe, dann gibt er "Speicherzugriffsfehler" aus!

Muss ich vielleicht if(test == *"Hallo") oder sowas schreiben?

Update:

Das gibts doch nicht! In diesem Forum gibts zwar viele Leute, aber fast keiner weiss etwas, das mal kein Allgemeinwissen ist! Arghh!!

1 Antwort

Bewertung
  • Anonym
    vor 1 Jahrzehnt
    Beste Antwort

    Du definierst eine Zeigervariable *test, die aber nicht initialisiert ist. Dieser Zeiger kommt vom Stack und zeigt daher irgendwohin - da es die main()-Funktion ist und vorher noch nichts passiert ist wahrscheinlich auf die Speicheradresse 0. Dieser Bereich ist aber geschützt, weshalb der Versuch, in diesen Speicherbereich per scanf() Daten einzulesen zu diesem Fehler führt.

    Korrekt wäre:

    int main(void)

    {

    char test[100];

    scanf("%s", &test);

    if(test == "Hallo")

    printf("Du hast Hallo geschrieben");

    return 0;

    }

Haben Sie noch Fragen? Jetzt beantworten lassen.