Вы, вероятно, получаете ошибку сегмента, потому что вы не выделяете память для указателя int *v
, а затем вы пытаетесь присвоить ему значения, как будто это массив.Также int n;
никогда не инициализировался, поэтому вы попадаете в неопределенное поведение.Также File
не является типом, если вы не сделали свой собственный, который не показывает, должно быть FILE
.
Попробуйте что-то вроде этого:
#include <stdio.h>
#include <stdlib.h>
#define MAX_NUMS 1024
int main()
{
int *v;
int i=0, j=0, aux=0, n = 0;
FILE *fp;
fp = fopen("Inteiros.txt", "r");
if(fp == NULL) {
printf("Erro, ficheiro nao encontrado!\n");
return 1;
}
else {
//allocate memory for v
if ((v = malloc(sizeof (int) * MAX_NUMS)) == NULL) {
printf("Error in malloc\n");
return 1;
}
while(!feof(fp)) {
fscanf(fp, "%d", &v[i]);
i++;
}
//number of lines read
n = i;
for(i = 0; i < n; i++) {
for(j = 0; j < n-i-1; j++) {
if(v[j] > v[j+1]) {
aux = v[j];
v[j] = v[j+1];
v[j+1] = aux;
}
}
}
for (i = 0; i < MAX_NUMS; i++)
printf("v[%d] is %d\n", i, v[i]);
}
return 0;
}