Problem mit Zufallszahlen



  • Hallo zusammen

    Folgendes Programm erzeugt einen Fehler nach der Ausführung. Komischerwiese
    wird aber eine Zufallszahl ausgerechnet und auch angegeben.

    Das Programm soll einen Datensatz in einer bestimmten (eben duch die
    Zufallszahl bestimmten) Zeile einlesen und danach ausgeben. Das funktioniert
    auch alles prima, bitte keine Fehler hier suchen! Das Problem scheint einzig
    und alleine der Zufallsgenerator zu sein.

    [CODE]
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(void)
    {
    /* Zufallsgenerator initiallisieren*/
    srand(time(0));

    /* Variablen */
    char *abkuerzung, *satz;
    FILE *datei;
    int datensatz, einlesen;
    abkuerzung = malloc(10);
    satz = malloc(200);

    /* Datei öffnen */
    datei = fopen ( "alias.txt" , "r" );

    /* Datensatz einlesen /
    datensatz = rand() % 60+1; /
    diese Zeile erzeugt den Fehler /
    /* wenn die Zeile ausgeklammer wird,
    /
    /* verschwindet der Fehler */

    printf("%d",datensatz); /* Zufallszahl wird angegeben, trotz des*/
    /* Fehler!?!?*/

    for (einlesen=1;einlesen<=10;einlesen++)
    {
    fscanf(datei, "%[]\n%[]\n");
    }
    fscanf(datei, "%s", abkuerzung);
    fscanf(datei, "%[^]\n",satz);
    printf("%s\n",abkuerzung);
    printf("%s\n",satz);
    fclose(datei);

    return 0;
    }
    [\CODE]

    Gruss
    Raffael



  • Neuer Versuch 🙂

    [code]
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(void)
    {
    /* Zufallsgenerator initiallisieren*/
    srand(time(0));

    /* Variablen */
    char *abkuerzung, *satz;
    FILE *datei;
    int datensatz, einlesen;
    abkuerzung = malloc(10);
    satz = malloc(200);

    /* Datei öffnen */
    datei = fopen ( "alias.txt" , "r" );

    /* Datensatz einlesen /
    datensatz = rand() % 60+1; /
    diese Zeile erzeugt den Fehler /
    /* wenn die Zeile ausgeklammer wird,
    /
    /* verschwindet der Fehler */

    printf("%d",datensatz); /* Zufallszahl wird angegeben, trotz des*/
    /* Fehler!?!?*/

    for (einlesen=1;einlesen<=10;einlesen++)
    {
    fscanf(datei, "%[]\n%[]\n");
    }
    fscanf(datei, "%s", abkuerzung);
    fscanf(datei, "%[^]\n",satz);
    printf("%s\n",abkuerzung);
    printf("%s\n",satz);
    fclose(datei);

    return 0;
    }
    [\code]



  • Sorry, bin am üben.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
    /* Zufallsgenerator initiallisieren*/
    srand(time(0));
    
    /* Variablen */
    char *abkuerzung, *satz;
    FILE *datei; 
    int datensatz, einlesen;
    abkuerzung = malloc(10);
    satz = malloc(200);
    
    /* Datei öffnen */
    datei = fopen ( "alias.txt" , "r" );
    
    /* Datensatz einlesen */
    datensatz = rand() % 60+1; /* diese Zeile erzeugt den Fehler */
    /* wenn die Zeile ausgeklammer wird,*/
    /* verschwindet der Fehler */
    
    printf("%d",datensatz); /* Zufallszahl wird angegeben, trotz des*/
    /* Fehler!?!?*/
    
    for (einlesen=1;einlesen<=10;einlesen++)
    { 
    fscanf(datei, "%[^]\n%[^]\n");
    }
    fscanf(datei, "%s", abkuerzung);
    fscanf(datei, "%[^]\n",satz);
    printf("%s\n",abkuerzung);
    printf("%s\n",satz);
    fclose(datei);
    
    return 0;
    }
    


  • #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
    /* Zufallsgenerator initiallisieren*/
    srand(time(0));
    
    /* Variablen */
    char *abkuerzung, *satz;
    FILE *datei; 
    int datensatz, einlesen;
    abkuerzung = malloc(10);
    satz = malloc(200);
    
    /* Datei öffnen */
    datei = fopen ( "alias.txt" , "r" );
    
    /* Datensatz einlesen */
    datensatz = rand() % 60+1; /* diese Zeile erzeugt den Fehler */
    /* wenn die Zeile ausgeklammer wird,*/
    /* verschwindet der Fehler */
    
    printf("%d",datensatz); /* Zufallszahl wird angegeben, trotz des*/
    /* Fehler!?!?*/
    
    for (einlesen=1;einlesen<=10;einlesen++)
    { 
    fscanf(datei, "%[^]\n%[^]\n");
    }
    fscanf(datei, "%s", abkuerzung);
    fscanf(datei, "%[^]\n",satz);
    printf("%s\n",abkuerzung);
    printf("%s\n",satz);
    fclose(datei);
    
    return 0;
    }
    


  • Ich habe noch etwas ausprobiert.

    Wenn man die Zeile

    fscanf(datei, "%[^]\n%[^]\n");
    

    ausklammert. Dann funktioniert der Zufallsgenerator und es wird auch kein
    Fehler mehr erzeugt. Wohler kommt das? Irgendwie scheinen sich diese
    Zeile und der Zufallsgenerator nicht zu vertragen. Weil für sich läuft
    beides perfekt, nur kombiniert gibts einen Fehler.

    Gruss
    Raffael



  • Also, das "datei" in der Zeile scheint ihn zu stören. Wenn ich dort was anders einsetzte, dann verschwindet der Fehler. Dann liest er aber natürlich auch nicht mehr aus der Datei. Ich bin mit meinem Letein am Ende!


Anmelden zum Antworten