gpt4 book ai didi

c - Realloc 和 sscanf 到一个函数中

转载 作者:行者123 更新时间:2023-12-02 21:37:23 26 4
gpt4 key购买 nike

我有一个包含 num 行的文件:每一行包含一个数字。我想将每个数字保存到 vector *vet 中。为什么这段代码不起作用?

段错误(核心转储)

我认为错误是在save_numbers函数中的sscanf,但我不知道为什么。

#include <stdio.h>
#include <stdlib.h>

/* 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]);

关于c - Realloc 和 sscanf 到一个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21081191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com