如何在C++中向文件中写入多行而不丢失前几行
How to write multiple lines to file in C++ without losing previous lines
我需要在一个txt和二进制文件中写入多行,我创建了一个函数(我将在下面附加它(,该函数应该向文件中写入一些数组项。问题是,当我在同一个函数中打开和关闭文件时,我使用了fprintf,所以每次我的for(因为它是一个数组(调用该函数时,它都会覆盖文件。我正在考虑分别在for之前和之后打开文件和关闭它。有没有一种更优雅的方式来做我想要的事情?目前,我使用文件I/O进行咨询,它只提到fprintf。
这是我的代码:
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
struct numarComplex {
int parteReala = 0;
int parteFractionara = 0;
}numere[5];
void printareNumar (struct numarComplex numar) {
printf("Numarul este: %d.%dn", numar.parteReala, numar.parteFractionara);
printf("n");
}
void citireNumar (struct numarComplex *numar) {
printf ("Introduceti partea reala: ");
scanf("%d", &numar -> parteReala);
printf ("Introduceti partea fractionara: ");
scanf("%d", &numar -> parteFractionara);
}
void scriereNumarTxt (struct numarComplex numar) {
// am decis ca la alegerea data sa se scrie in fisier .txt, sa se utilizeze numerele introduse de la tastatura in 1, pentru comoditate
FILE *nrTxt;
nrTxt = fopen("./numarcomplex.txt", "w+");
fprintf(nrTxt, "%d.%dn", numar.parteReala, numar.parteFractionara);
fclose(nrTxt);
}
int main()
{
int optiune;
do {
printf("Meniu: n");
printf("1. Citire de la tastatura: n");
printf("2. Afisare la ecran: n");
printf("3. Citire din fisier text: n");
printf("4. Scriere in fisier text: n");
printf("5. Citire din fisier binar: n");
printf("6. Scriere in fisier binar: n");
printf("7. Iesire: ");
scanf("%d", &optiune);
switch (optiune) {
case 1: {for (int i = 0; i < 5; i++) {
citireNumar(&numere[i]);
}
break;
}
case 2: {
printf("Tabloul de structuri: n");
for (int i = 0; i < 5; i++) {
printareNumar(numere[i]);
}
break;
}
case 4: {
for (int i = 0; i < 5; i++) {
scriereNumarTxt(numere[i]);
} break;
}
}
} while (optiune != 7);
}
使用:
#include <fstream>
int main() {
std::ofstream outfile;
outfile.open("test.txt", std::ios_base::app); // append instead of overwrite
outfile << "Data";
return 0;
}
以上方法将附加文件
相关文章:
- C++从字符串中检索几行
- Eulers 项目问题 no 345 听不懂几行代码
- 如何在几个空行后打印文件中的输出
- CIN 会丢失每行的前几个字符
- 覆盖范围分析一些googletest宏显示在分布在几行上时的覆盖范围不完整 - 原因
- 在C++和Qt中,我如何将这些"#include < Q...>"写到另外几行?
- 记事本 中的正式表达式.如何制作可以在几行中使用的图案
- (c++)无法让 void 函数工作,主.cpp内部的几行也有问题
- 从C 中的线路读取(每行都有一个字符串和几个INT值)
- 将几行代码写成一行是有益的(就内存和空间复杂性而言)。值得吗?
- iostream正确读取了几行,然后在随后的几行中失败
- gdb的奇怪行为([next]在块代码上向后跳几行)
- C++中几行的含义
- 我似乎无法在qt创建器中打印几行数据。程序覆盖除最后一行之外的所有输出
- 擦除屏幕上的几行,而不是清除整个屏幕
- 什么样的语言特性适合于只有几行不同的类似函数
- c++如何从文件中只读取几行
- 让错误输出包括最后几行代码
- C/C++服务器未发送文件的最后几行
- 为什么当我使用 "randomSelect" 方法替换几行代码时我的程序不起作用