错误:使用fopen和open打开分段错误

时间:2015-10-07 21:55:15

标签: c

我正在使用I2C协议将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时,问题出现了,当我评论该行代码运行良好时。我不确定是不是因为我正在使用fopen而“/ dev / i2c-1”正在运行。请帮忙

2 个答案:

答案 0 :(得分:1)

您错过了fprintf声明

中的文件指针
fprintf("Datos leidos del sensor");

尝试

fprintf(f, "Datos leidos del sensor");

答案 1 :(得分:0)

注意:您使用"W"代替"w"作为fopen的开放模式。这是真正的问题。

但是,你应该经常检查&#34; f&#34; fopen后为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");