Saya perlu menulis beberapa baris dalam file txt dan biner dan saya membuat fungsi (saya akan melampirkannya di bawah) yang seharusnya menulis beberapa item array ke dalam file. Masalahnya adalah, saya menggunakan fprintf saat saya membuka dan menutup file dalam fungsi yang sama dan setiap kali saya untuk (karena itu array) memanggil fungsi, itu menimpa file. Saya sedang berpikir untuk membuka file dan menutupnya masing-masing sebelum dan sesudah for. Apakah ada cara yang lebih elegan untuk melakukan apa yang saya cari? Saat ini saya menggunakan File I/O untuk tujuan konsultasi dan hanya menyebutkan fprintf.

Berikut kode saya:

#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.%d\n", 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.%d\n", 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);

}
c++
-2
Liviu Ganea 18 Mei 2021, 10:29

1 menjawab

Jawaban Terbaik

Gunakan:

#include <fstream>

int main() {  
  std::ofstream outfile;

  outfile.open("test.txt", std::ios_base::app); // append instead of overwrite
  outfile << "Data"; 
  return 0;
}

Metode di atas akan menambahkan file

2
HARSH MITTAL 18 Mei 2021, 07:39