Realloc和sscanf成为一个函数
我有一个有num
行的文件:每行包含一个数字。 我想将每个数字保存到矢量*vet
。 为什么这段代码不起作用?
Segmentation fault (core dumped)
我认为错误是save_numbers
函数中的sscanf
,但我不知道为什么。
#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]);