[C/C++] Speicherzugriffsfehler

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Kerkchicken, 5. Dezember 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. Dezember 2007
    Speicherzugriffsfehler

    Ich bastel jetzt seit ein paar Tagen mit C rum und hab mir als erstes eigenes Progrämmchen einen Primzahlfinder überlegt. Vielleicht ist der nicht perfekt, aber der Algorithmus funktioniert. Nur wenn ich eine Reihe ausgeben lassen will dann spukt er immer nur Speicherzugriffsfehler aus. Ich stehe da irgendwie gerade auf dem Schlauch und hab keine Idee warum. Wäre nett wenn mir jemand helfen könnte. BW is auch drin

    Code:
    /* prim.c --- findet Primzahlen heraus */
    #include <stdio.h>
    
    int p, d, b, e, wahl, bis;
    
    int primfind (int p)
    { 
    
     d = 3;
     b = 0;
     e = 0;
    
     for ( d = 3 ; d < ( p / 2 ) ; d = d + 2 )
     {
     if((p%3))
     {
     b = 1;
     return(b);
     }
     }
     b = 0;
     return(b);
    }
    
    
    
    main ()
    {
     printf("\tP R I M F I N D\n\n");
     printf("Modus: (R)eihe ausgeben, (E)inzelne Zahl prüfen >");
     wahl = getchar();
     switch (toupper(wahl))
     {
    
     // Reihe ausgeben
     case 'R':
     printf("Primzahlen ausgeben bis > ");
     scanf("%i", bis);
     printf("\n");
     for( p = 3 ; p <= bis ; p = p + 2 );
     {
     e = primfind(p);
     if (e)
     {
     printf("%i\t", p);
     }
     }
     break;
    
     // Einzelne Zahl prüfen
     case 'E':
     printf("\nZu prüfende Zahl > ");
     scanf("%i", &p);
     e = primfind(p);
     if (e)
     {
     printf("\nBei %i handelt es sich um eine Primzahl!\n", p);
     }
     else
     {
     printf("\nBei %i handelt es sich um keine Primzahl!\n", p);
     }
     break;
    
     // Bei falscher Eingabe
     default:
     printf("\nUngültige Eingabe!\n\n");
     }
    }
    
    mfg
     
  2. 5. Dezember 2007
    AW: Speicherzugriffsfehler

    ich kenn mich leider nicht genau in c aus, aber kann es sein, dass du bei scanf("%i", bis); bis auch als referenz übergeben musst, wie du es später bei der einzeln zu überprüfenden zahl auch getan hast (scanf("%i", &p); ) wäre auf jeden fall das, was mir als erstes ins auge sticht..

    //edit:
    ok, durch google bestätigt:
    if you want to store the result of a fscanf operation on a regular variable you should precede its identifier with the reference operator
     
  3. 5. Dezember 2007
    AW: Speicherzugriffsfehler

    auja danke hast recht!
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.