我正在实习,并且正在从事 SLAM 模拟项目,在将云点写入文件时遇到了一个小问题。
这是我的代码,我有两个功能:
void ecriture_fichier(double x, double y){
FILE *fichier = NULL;
fichier = fopen("/home/stagiairepierrick/points/points.txt", "a");
if(fichier != NULL ){
fprintf(fichier, "%lf %lf \n",x,y);
} else {
std::cerr << "probleme ecriture" << std::endl;
}
fclose(fichier);
}
void ajout_nombre_lignes(long nombre_lignes){
FILE *fichier = NULL;
fichier = fopen("/home/stagiairepierrick/points/points.txt", "r+");
if(fichier != NULL ){
fseek(fichier, 0, SEEK_SET);
fprintf(fichier, "%ld \n", nombre_lignes);
} else {
std::cerr << "probleme ecriture nombre de lignes" << std::endl;
}
fclose(fichier);
}
该函数ajout_nombre_ligne
在之前被调用ecriture_fichier
。我希望第一个 ligne 是 ligne (变量nombre_lignes
)的数量,但是当我执行此代码时,我在文件中得到以下结果:
8070
00000 5.200000
5.200000 5.200000
5.200000 5.200000
5.200000 5.200000
5.200000 5.200000
5.200000 5.200000
对于第一行添加的每个字符,我可以看到第二行的一个字符被删除,我明白为什么,但我找不到任何解决方案。
你们能帮帮我吗?