Ошибка ввода файла

0

Я пытаюсь ввести файл в Мой код, который содержит список целых чисел с новой строкой. Я использовал следующий код для ввода содержимого в файл

int main()
{
FILE* f = fopen("Integers.txt", "r");
int n = 0, i = 0;
int numbers[5]; // assuming there are only 5 numbers in array input

while( fscanf(f, "%d\n", &n) > 0 ) // parse %d followed by '\n'
{
    numbers[i++] = n;
}

fclose(f);
}

Я получаю ошибку сегментации, поэтому, пожалуйста, помогите.

  • 0
    Integers.txt содержится пять или более?
  • 0
    имеет 10000 целых чисел
Показать ещё 5 комментариев
Теги:

2 ответа

1

Вероятно, вы должны попробовать это, так как numbers массивов всего 5.

int main()
{    
int n = 0, i = 0;
int numbers[5]; // assuming there are only 5 numbers in array input

FILE* f = fopen("Integers.txt", "r");

if (f != NULL)
{    
    for (i=0; i<(sizeof(numbers)/sizeof(int)); i++)
    {
        if (fscanf(f, "%d\n", &n) > 0)
            numbers[i] = n;
        else
            break;
    }
    fclose(f);
}
}

Номера массивов numbers[5] находятся в стеке, и доступ к ним за пределами границ приведет к повреждению стека.

  • 4
    sizeof(numbers) -> sizeof(numbers)/sizeof(*numbers)
  • 1
    Я все еще получаю фалут сегментации
Показать ещё 2 комментария
1

Попробуй это.....

main()
{
 FILE* f = fopen("Integers.txt", "r");
 int n,i;
 int numbers[5]; // assuming there are only 5 numbers in array input

 for (i=0; i<5; i++)
 {
 fscanf(f, "%d", &n)
 numbers[i] = n;
 }

fclose(f);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню