我正试图将一些二进制数据保存在c中的文件中(5个8位的矢量(。这是我为此编写的代码:
FILE* flatencies;
flatencies=fopen("savelatencies.bin", "wb+");
if(flatencies == NULL){
perror("n Error!: ");
}
while(1){
*p_gpio_capture = 0x0 ;
for(i=0;i<5;i++){
fwrite(*(latency+i), 8, 1, flatencies);
}
}
fclose(flatencies);
我正在嵌入式系统中执行这个脚本。但我从串行终端中的perror得到了这样的消息:";错误!::I/O错误";。我不太理解这个错误,也不知道如何解决。如果有人能帮助我,我将不胜感激。
您的代码中存在一些问题:
- 即使打开文件失败,您仍在继续写入该文件
if(flatencies == NULL) {
perror("n Error!: ");
// You should return here
}
...
- 您似乎没有脱离
while
循环。这将导致程序永远循环。你应该考虑在某个时候打破它。(事实上,这对我来说似乎没用,所以我不明白你当初为什么写它(
对于错误,您应该打印errno
的值,并查看特定于平台的文档以了解它的实际含义。