Arbeiten an einem Projekt, wo ich eine Datei haben muss, die Zahlen generiert wird. Die erste Zeile ist ein generierter Int. Gefolgt von einem Schwimmer (separate Linien). (Ich mache es getrennte Zeilen, weil ich denke, dass es mehr Sinn macht, da ich es auf zwei verschiedene Arten für die Bin-Packing-Probleme lesen muss, für die ich das brauche ... Wie eine Art, eine nach der anderen zu lesen und eine andere sie zu speichern in einem Array .. Aber wollen Sie zuerst auf diese) Get ein Seg Fehler, wenn ich versuche, meine Datei für einen Float nach dem Lesen eines int zu lesen. Edit: Fehler tritt in ReadOffline auf.Fscanf Seg Fehler
int randomFunction()
{
FILE *fp;
int i;
fp = fopen("theItems.txt", "w");
if (fp == NULL)
printf("Error: file can't be opened.\n");
srand(time(NULL));
int random_number = rand();
printf("Random Number %d\n", random_number);
fprintf(fp,"%d",random_number);
fclose(fp);
fp = fopen("theItems.txt", "a");
int numberOfItems = rand();
printf("NumberOfItems: %d\n",numberOfItems);
for(i = 0; i < 10; i++)
{
fp = fopen("theItems.txt", "a");
float number = (float)rand()/(float)(RAND_MAX);
fprintf(fp,"%f",number);
fprintf(fp,"%s", "\n");
fclose(fp);
}
return numberOfItems;
}
void readOffline(int numberOfItems)
{
FILE *fp;
int n = 0,i;
float nu = 0.00;
fp = fopen("theItems.txt", "r");
if (fp == NULL)
printf("Error: file can't be opened.\n");
fseek(fp,SEEK_SET,0);
fscanf(fp,"%d",&n);
printf("Number read: %d\n", n);
float array[numberOfItems];
// for(i = 0; i < 3; i++)
// {
fscanf(fp,"%f",&nu);
// array[i] = nu;
// }
fclose(fp);
printf("Int:%d\n", n);
int j;
// for(j = 0; j < 3; j++)
// printf("Float Number:%f\n", array[j]);
}
int main()
{
int numberOfItems = randomFunction();
readOffline(numberOfItems);
return 0;
}
Ich versuche nur, ein Verständnis zu bekommen, warum es einen seg Fehler verursacht, wenn ich es // out ich es mein int zu lesen bekommen kann, aber manchmal ist es nicht die richtige lesen Int. Aber ja. Bitte lassen Sie mich wissen, wenn ich weitere Details brauche oder überall klarer sein muss
'float-array [numberOfItems];' wird durch 'int numberOfItems = rand();' Es gibt keinen Code, der 'numberOfItems' davon abhält, 0 oder wahnsinnig groß zu sein. Schlagen Sie 'numberOfItems = rand()% 10 + 1;' – chux
Wie groß ist 'numberofItems'. Wenn es zu groß ist, werden Sie das Limit für die Größe von automatischen Arrays erreichen. – Barmar
Das funktionierte chux. Vielen Dank! – anchorman