gpt4 book ai didi

c - 错误: Segmentation fault using fopen and open

转载 作者:行者123 更新时间:2023-11-30 15:16:34 32 4
gpt4 key购买 nike

我正在使用 I2C 协议(protocol)将 BeagleBoneBlack 与 IMU 连接。我已经在控制台中读取了数据,但当我尝试将数据存储在 .txt 文件中时,它返回错误:段错误。

int I2C_open()
{
int file;
char *dev = "/dev/i2c-1";
if ((file=open(dev,O_RDWR))<0);
{
perror("Abrir el canal");
}
return file;
}

int main()
{
archivo=I2C_open();
f=fopen("./home/debian/Desktop/Comunicacion/Prueba.txt","W");
fprintf(f,"Datos leidos del sensor");
}

这只是代码的一部分,因为它很大。当我使用 fprintf 时,问题就出现了,当我评论该行时,代码运行良好。我不确定是否是因为我在“/dev/i2c-1”运行时使用 fopen。请帮忙

最佳答案

注意:您使用 "W" 而不是 "w" 作为 fopen 的打开模式。这才是真正的问题。

但是,您应该始终在 fopen 之后检查“f”变量是否为 NULL。我相当确定它是 NULL [这意味着您无法打开该文件]。这只是一个好的做法。这比追踪段错误要容易得多。

你有:

f=fopen("./home/debian/Desktop/Comunicacion/Prueba.txt","W");
fprintf(f,"Datos leidos del sensor");

将其更改为:

f=fopen("./home/debian/Desktop/Comunicacion/Prueba.txt","w");
if (f == NULL) {
perror("fopen");
exit(1);
}
fprintf(f,"Datos leidos del sensor");

关于c - 错误: Segmentation fault using fopen and open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003060/

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