Я пытаюсь ввести файл в Мой код, который содержит список целых чисел с новой строкой. Я использовал следующий код для ввода содержимого в файл
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);
}
Я получаю ошибку сегментации, поэтому, пожалуйста, помогите.
Вероятно, вы должны попробовать это, так как 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]
находятся в стеке, и доступ к ним за пределами границ приведет к повреждению стека.
sizeof(numbers)
-> sizeof(numbers)/sizeof(*numbers)
Попробуй это.....
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);
}