У меня есть файл с num
строками: каждая строка содержит одно число. Я хочу сохранить каждое число в векторе *vet
. Почему этот код не работает?
Segmentation fault (core dumped)
Я думаю, что ошибка sscanf
в функции save_numbers
, но я не знаю почему.
#include #include /* This function allocate memory and save numbers into a vector */ int save_numbers (int **vet, int *num) { FILE *fin; int i = 0; char buff[10]; if ( !(fin = fopen("numbers.dat", "r")) ) return 1; while ( fgets(buff, sizeof(buff), fin) ) { *vet = (int *) realloc (*vet, (i+1) * sizeof(int) ); sscanf (buff, "%d", vet[i]); i++; } *num = i; return fclose(fin); } int main () { int i, num, *vet = NULL; if ( save_numbers(&vet, &num) ) { perror("numbers.dat"); exit(1); } /* print test */ for (i=0; i<num; i++) printf ("%d ", vet[i]); printf("\n"); free(vet); return 0; }
Пример файла здесь: http://pastebin.com/uCa708L0
менять
sscanf (buff, "%d", vet[i]);//vet : int **
в
sscanf (buff, "%d", &(*vet)[i]);