【发布时间】:2015-01-21 05:24:34
【问题描述】:
我正在编写一个程序来从文件中读取十六进制代码并通过 SPI 将其馈送到另一个芯片。我正在尝试使用 fgets 从 hexfile 中读取每一行,然后使用 sscanf 将其解析为 unsinged int array hexfile 的格式是如下:
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 函数从文件中读取?
【问题讨论】:
-
fopen 返回码未经测试。范围测试 (