gpt4 book ai didi

c - C 语言文件 I/O 程序 : Segmention Fault (core dumped)

转载 作者:行者123 更新时间:2023-11-30 17:25:17 25 4
gpt4 key购买 nike

我正在编写一个程序来从文件中读取十六进制代码并通过 SPI 将其提供给另一个芯片。我尝试使用 fgets 读取 hexfile 中的每一行,然后使用 sscanf 将其解析为 unsinged int array 十六进制文件的格式为如下:

ff32
34dc
1234
32d4

...

int main (void)
{
FILE *fp1;
int i = 0;
fp1 = fopen("hexfile.txt", "r+");
char line[500];
unsigned int hex[40];

while (fgets(line, sizeof(line), fp1) != NULL) {

while (sscanf(line, "%x", &hex[i]) == 1) {
printf("%4x \n", hex[i]);
i++;
}
}

fclose(fp1);
return 0;
}

错误: 段错误(核心转储) 当您尝试取消引用 NULL 指针时,我大致知道结果。但是我的代码有什么问题吗?其次,是否有更好的方法使用其他文件 I/O 函数读取文件而不需要动态内存分配?

最佳答案

您需要删除 while 并将其替换为 if:

FILE *fp1;
int i = 0;
fp1 = fopen("d:\hexfile.txt", "r+");
char line[500];
unsigned int hex[40];

while (fgets(line, 8, fp1) != NULL) {
if (sscanf(line, "%x", &hex[i]) == 1) { /*here while => if */
printf("%4x \n", hex[i]);
i++;
}
}

fclose(fp1);

关于c - C 语言文件 I/O 程序 : Segmention Fault (core dumped),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27088915/

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