"' char'的不兼容类型to' char' [100]"我正在使用strcat吗?

时间:2016-01-07 08:31:41

标签: c++ arrays char fwrite strcat

美好的一天,

我正在为我的IMU写一个数据记录程序。我希望在记录每个值后添加换行符,但是,我继续在此行上收到错误:

strcat(file_DT,"\n");

该错误表明在' char'的分配中存在"不兼容的类型。 to' char' [100]"

我尝试使用

file_DT+="\n"; 

之前但事实证明它只适用于字符串。

我无法找到解决困境的方法。有一个更好的方法吗?非常感谢您的帮助:)

float deltaTime2;
FILE *fileDT;
char file_DT[100];
const char *filenameDT = "dT.txt";

while(1){

    /* do quadcopter orentation sampling here */

// log DT
fileDT = fopen(filenameDT, "a+");
    if (fileDT){ //if file exists
        snprintf(file_DT, 100, "%f", deltaTime2);
        strcat(file_DT,"\n");
        fwrite(&file_DT[0], sizeof(char), 100, fileDT);
        cout << "Logging DT" << << endl;
        fclose(fileDT);
        fileDT = NULL;
    }
    else{ //no file, generate file
        cout << "No file present, generating new fileDT" <<     endl;
        snprintf(file_DT, 100, "%f", deltaTime2);
        strcat(file_DT,"\n");
        fwrite(&file_DT[0], sizeof(char), 100, fileDT);
        fclose(fileDT);
        fileDT = NULL;
    }

}

2 个答案:

答案 0 :(得分:3)

最小的改变可以重写以下几行

    snprintf(file_DT, 100, "%f", deltaTime2);
    strcat(file_DT,"\n");
    fwrite(&file_DT[0], sizeof(char), 100, fileDT);

as

    int datalen = snprintf(file_DT, 100, "%f\n", deltaTime2);
    fwrite(&file_DT[0], sizeof(char), datalen, fileDT);

这样您就可以获得换行符并只写入所需的数据。 否则你最终会将垃圾写入文件(你的行可能短于100个字节)

答案 1 :(得分:2)

如果我可以建议这种代码在C ++中做得更好

#include <iostream>
#include <fstream>
#include <string>
using namspace std;

const string filenameDT;

int main()
{
    ofstream file(filenameDT);
    file << deltaTime2 << endl;
    cout << "Logging DT" << endl;        
}

我们在2016年!不要那样写代码!