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!