gpt4 book ai didi

c++ - 使用 fopen() 的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-27 23:54:10 25 4
gpt4 key购买 nike

我正在实习,正在做一个 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_ligneecriture_fichier 之前被调用。我希望第一个 lign 是 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

对于在我的第一行添加的每个字符,我可以看到我的第二行的一个字符正在被删除,我明白为什么但我找不到任何解决方案。

你们能帮帮我吗?

最佳答案

行为没有任何问题。

如果您在文件中间或不在末尾的某处写入字符,则会覆盖该位置的任何内容。

如果你想在其他地方而不是最后(追加),你将不得不读取和写入文件中你没有修改的部分。

此外,您可能想改用 std::ifstream/std::ofstream/std::fstream

关于c++ - 使用 fopen() 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43888077/

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