"incompatible types in assignment of 'char' to 'char'[100]" 我使用的 strcat 对吗?
"incompatible types in assignment of 'char' to 'char'[100]" am I using strcat right?
美好的一天,
我正在为我的 IMU 编写数据记录程序。我想在记录每个值后添加一个换行符,但是,我一直在这一行收到错误:
strcat(file_DT,"\n");
错误指出存在 "incompatible types in assignment of '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;
}
}
可以重写以下行进行最小的更改
snprintf(file_DT, 100, "%f", deltaTime2);
strcat(file_DT,"\n");
fwrite(&file_DT[0], sizeof(char), 100, fileDT);
作为
int datalen = snprintf(file_DT, 100, "%f\n", deltaTime2);
fwrite(&file_DT[0], sizeof(char), datalen, fileDT);
这样您就可以获得换行符并只写入所需的数据。
否则你最终会将垃圾写入文件(你的行可能短于 100 字节)
如果我可以建议这种代码最好用 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 年了!不要那样写代码!
美好的一天,
我正在为我的 IMU 编写数据记录程序。我想在记录每个值后添加一个换行符,但是,我一直在这一行收到错误:
strcat(file_DT,"\n");
错误指出存在 "incompatible types in assignment of '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;
}
}
可以重写以下行进行最小的更改
snprintf(file_DT, 100, "%f", deltaTime2);
strcat(file_DT,"\n");
fwrite(&file_DT[0], sizeof(char), 100, fileDT);
作为
int datalen = snprintf(file_DT, 100, "%f\n", deltaTime2);
fwrite(&file_DT[0], sizeof(char), datalen, fileDT);
这样您就可以获得换行符并只写入所需的数据。 否则你最终会将垃圾写入文件(你的行可能短于 100 字节)
如果我可以建议这种代码最好用 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 年了!不要那样写代码!