Работа над проектом, где у меня должен быть файл, который генерирует числа. Первая строка - это сгенерированный int. Далее следуют поплавки (отдельные строки). (Я делаю это отдельные строки, потому что я чувствую, что это имеет больше смысла, поскольку я должен прочитать два разных способа для проблем с упаковкой ящиков, которые мне нужны для этого ... Как один из способов чтения по одному, а другой - в массиве. Но сначала хочу получить это) Получение seg-сбоя, когда я пытаюсь прочитать мой файл для float после прочтения int. Изменить: ошибка возникает в readOffline.Fscanf Seg Error
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;
}
Просто пытаюсь получить понимание, почему это вызывает ошибку, когда я сегмы // это я могу получить его, чтобы прочитать мою Int, но иногда это не право Int читать. Но да. Пожалуйста, дайте мне знать, если мне нужна дополнительная информация или вам нужно быть более ясным где-нибудь
'float array [numberOfItems];' устанавливается 'int numberOfItems = rand();' Нет кода, чтобы 'numberOfItems' не был 0 или безумно большим. Предложить 'numberOfItems = rand()% 10 + 1;' – chux
Насколько велика 'numberofItems'. Если он слишком велик, вы достигнете предела в размере автоматических массивов. – Barmar
Это сработало. Благодаря! – anchorman