gpt4 book ai didi

c - 将文件指针分配给另一个时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:51 25 4
gpt4 key购买 nike

inline void readSymColValUpdRow(int *row, const int nmat, 
int **col, double **val, const int nnz,
FILE *fpcol)
{
*col = (int*)_mm_malloc(sizeof(int)*nnz, 64);
*val = (double*)_mm_malloc(sizeof(double)*nnz, 64);
FILE *fpval;
*fpval = *fpcol;
const int BUF_LEN = nnz*10;
char buf[BUF_LEN];
fgets(buf, BUF_LEN, fpval);
fgets(buf, BUF_LEN, fpval);
...//other code
}

这就是我想要做的。我需要两个文件指针,指向函数“readSymColValUpdRow()”中文件中的不同位置。因此,我声明了一个文件指针 *fpval 并将 fpcol 的内容分配给它。 “fpcol”是由函数参数传递的有效文件指针。我尝试让 fpval 指向前方两行。但是,这样做总是会出现“段错误”。一旦我发表评论

*fpval = *fpcol;

和其他相关代码一切都很好。我真的不明白这里出了什么问题。感谢您的帮助。

最佳答案

请注意,FILE * 并不意味着指针值 表示文件中的位置,您可以将其视为常规指针!

意思是“指向FILE的指针”,其中FILE是一个“对象”,即一堆数据域,用来表示一个打开的文件,在turn 有一个当前位置。

当您对文件进行 I/O 操作时,这些字段(或更下方的字段)会发生变化,但 FILE * 指针值本身不会发生变化。所以你不能复制 FILE * 来“保存”文件中的位置。您必须使用 ftell()fseek() 在文件中跳转。

关于c - 将文件指针分配给另一个时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27151904/

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