如何将数据追加到存在数据的文件中

How to append the data into the file that exists data

本文关键字:数据 文件 存在 追加      更新时间:2023-10-16

我有一个文件的结构为:

A.txt 1 
B.txt 2
C.txt 3

现在,我想打开文件并附加新数据,以便通过第二列添加2创建新数据,并且可以通过C/c++从该列获取数据的同一行例如

A.txt 1 3

式中3=1+2,1为第一行数据,2为加权因子最后,我期望的结果是

A.txt 1 3
B.txt 2 4
C.txt 3 5

我可以读取和获取数据,如:

 FILE *fp;
 fp=fopen('input.txt','a+');//Is it correct for append and read mode
 if(!fp)
   return -1;
 int icheck=-1;
 int thirdNum=0;
 int num=0;
 icheck= fscanf(fp, "%s %d", filename,&num);
 thirdNum=num+2;
 //How to append it to file as same row with the A.txt or B.txt or C.txt

Thank you so much

在c++中可以这样做:

#include <fstream>
#include <string>
#include <sstream>
#include <stdexcept>
int main() {
    std::string filename = "file.txt", line;
    std::ifstream ifs( filename.c_str(), std::ios::in);
    if (!ifs) // check if the file exists and can be read
        throw std::runtime_error( "cannot open the file");
    std::stringstream buffer; // buffer to store the lines
    while ( getline( ifs, line)) {
        int previous_value;
        std::istringstream iss(line.substr(line.find_last_not_of(" ")));
        iss >> previous_value;
        buffer << line << "t" << (previous_value + 2) << "n"; // add integer
    }
    std::ofstream ofs( filename.c_str(), std::ios::out); // ofstream buffer
    ofs << buffer.rdbuf(); // write to the file
    return 0;
}

如果避免将所有文件内容复制到临时缓冲区中,可以使内存效率更高。