tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
402
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    neonium neonium ist offline Rookie
    Registriert seit
    Dec 2004
    Beiträge
    6
    Also ich will ein Führerscheinprüfungs programm schreiben. Leider weiss ich nicht mehr weiter. Man hat mir gesagt das programm ramspeicher freigeben muss oder so.

    Naja hier erstmal link zum Code http://nopaste.php-q.net/215586

    Programmiere mit dev cpp leider kennt das irgendwie nich alle funktionen das programm stürzt halt immer ab.
     

  2. #2
    deepthroat deepthroat ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi, willkommen bei tutorials.de!

    Wenn du sagst du benutzt Dev-C++, warum schreibst du das dann ins Borland CBuilder / VCL Forum?

    Bevor du den Speicher freigibst oder benutzt mußt du erstmal Speicher überhaupt vom System anfordern. Das machst du nämlich nicht, sondern du initialisierst die Variable fragen z.B. mit NULL (was ja schonmal an sich nicht schlecht ist, da es ein Pointer ist), aber du greifst dann einfach auf fragen[0], fragen[1], usw. zu. Das geht natürlich nicht denn der Zeiger zeigt ja auf nichts.

    Warum verwendest du dafür denn überhaupt Zeiger, du kannst doch gleich statische Arrays anlegen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    char* fragen[30];
     
    fragen[0] = "...";
    fragen[1] = "...";
    ...
    fragen[29] = "...";

    Übrigens würde man das normalerweise nicht mit 5 Arrays realisieren sondern dazu Strukturen verwenden.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    neonium neonium ist offline Rookie
    Registriert seit
    Dec 2004
    Beiträge
    6
    ist für die schule alles muss man sich selbe beibringen hab davor schon für anderen morse prog geschrieben da hab ich es ähnlich funktioniert aber da ist er auch immer abgeschmiert darum hab ichs anders gemacht. Warum ichs hier poste weil ich eigentlich mit augenkrebsprogramm turbo c 3.0 programmiere. Was macht das * nach dem char. Ich weiss das sollte man mit einem array machen aber erstmal brauch ich ein lauffähiges prog optimieren kann ich das später noch.
    Geändert von neonium (30.05.06 um 22:21 Uhr)
     

  4. #4
    deepthroat deepthroat ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Das Sternchen hat erstmal im Grunde nichts mit Arrays zu tun. Es bedeutet lediglich das ein Zeiger auf einen bestimmten Typ deklariert wird.

    Deklarationen kann man am besten immer von rechts nach links lesen. In diesem Fall steht da: "deklariere ein Array von 30 Elementen vom Typ Zeiger auf char (namens fragen)".

    Das da ein Array deklariert wird siehst du an den eckigen Klammern und der Angabe der Anzahl der Elemente.

    Ein Zeiger auf char ist etwas besonderes in C da man damit einen String deklariert. Man kann also auch sagen es wird ein Array von 30 Elementen von Strings vereinbart. Und das ist ja im Grunde genau das was du brauchst.

    Ich habe übrigens noch kein Wort von Optimierung gesagt. Wenn du das mit einem dynamischen Array machen willst so wie du es angefangen hast mußt du zusätzlich erstmal den Speicher reservieren und danach wieder freigeben:
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    char** fragen = NULL;
     
    fragen = calloc(30, sizeof(char*));
    if (fragen == NULL) {
      // Fehler: konnte Speicher nicht reservieren...
      return 1;
    }
    fragen[0] = "...";
    ...
    // zum Schluss wieder freigeben:
    free(fragen);
    Aber ich würde sagen, das das für den Anfang noch etwas schwierig ist. Das kannst du ja für dich selbst entscheiden ob die lieber ein statisches Array nimmst (wo der Compiler automatisch dafür sorgt das es angelegt und wieder aufgeräumt wird) oder ein dynamisches Array vorziehst.

    Die Deklaration von fragen bedeutet übrigens: "deklariere eine Variable vom Typ Zeiger auf Zeiger auf char (namens fragen)".

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von helaukoenig
    helaukoenig helaukoenig ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    390
    @neomium: Groß- und Kleinschreibung und Satzzeichen tragen erheblich zum Verständnis eines Textes bei.
     
    "Jetz is, wo früher inne Vergangenheit die Zukunft war." Herbert Knebel

    "Jetzt sind die guten alten Zeiten, nach denen wir uns in zehn Jahren zurücksehnen werden." Peter Ustinov

  6. #6
    neonium neonium ist offline Rookie
    Registriert seit
    Dec 2004
    Beiträge
    6
    Ja ok. Ich schreib jetzt mal ordentlich. Also ich habe das ganze zeit mal angepasst.
    hier http://nopaste.php-q.net/215996 des Codes, aber irgendwie funktioniert das nicht. Er geht aber irgendwie nicht aus der schleife von zeile 342 raus.

    Er generiert immer wieder fragen. Obwohl er eigentlich nur soviele fragen ausgeben soll, wie ich vorher angegeben hab.(
    Geändert von neonium (31.05.06 um 16:04 Uhr)
     

  7. #7
    deepthroat deepthroat ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von neonium
    Ja ok. Ich schreib jetzt mal ordentlich.
    Hm...
    Zitat Zitat von neonium
    Also ich habe das ganze zeit mal angepasst.
    hier http://nopaste.php-q.net/215996 der Code, aber irgendwie funktioniert das nicht. Er geht aber irgendwie nicht aus der schleiche für 342 raus. Er generiert immer wieder fragen. Obwohl er eigentlich nur soviele fragen ausgeben soll, wie ich vorher angegeben hab.
    Ja ok. Jetzt komm ich mir verarscht vor. Pass auf das ich dich nicht kaputt lache.

    Überarbeite doch deinen Beitrag einfach nochmal im Hinblick auf Rechtschreibung und semantischen Inhalt. Was meinst du mit 342?

    Gruß

    PS: Du mußt an scanf Adressen übergeben:
    Code c:
    1
    
    scanf("%i",&i);
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  8. #8
    neonium neonium ist offline Rookie
    Registriert seit
    Dec 2004
    Beiträge
    6
    gibs ne alternative zu
    variable=random(zahl);
    delay()
     

  9. #9
    deepthroat deepthroat ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von neonium
    gibs ne alternative zu
    variable=random(zahl);
    delay()
    Ja, gibt es. Aber halte dich erstmal an die Groß-/Kleinschreibung - siehe Netiquette Nr. 15.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Frage zu Pointern
    Von Quwerfeldein im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 04.01.11, 09:32
  2. Verwirrung mit Pointern
    Von UncleBob im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 16.11.10, 17:44
  3. Programmabsturz bei Pointern
    Von Manda im Forum C/C++
    Antworten: 14
    Letzter Beitrag: 17.05.09, 00:09
  4. Dumme Frage zu Pointern
    Von Orbit im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 03.02.08, 23:33
  5. 2D-Feld pointern
    Von Meldur im Forum .NET Café
    Antworten: 0
    Letzter Beitrag: 10.08.05, 12:19