Program używa strumienia plikowego do zapisu (ofstream). Najpierw otwiera plik "pierwszy.txt" w konstruktorze strumienia, zapisuje do niego wartości a i b, po czym wykonuje zamknięcie.
Kluczowy jest moment ponownego otwarcia "pierwszy.txt" metodą open() bez podania dodatkowych trybów. Dla ofstream typowym domyślnym zestawem jest zapis z truncacją (czyli utworzenie pliku od nowa lub wyczyszczenie istniejącego). To oznacza, że nawet jeśli wcześniej wpisano tam "5" i "5.5", to ponowne otwarcie powoduje skasowanie zawartości. Natychmiastowe zamknięcie po tym otwarciu pozostawia "pierwszy.txt" jako plik pusty.
Następnie ten sam strumień otwiera plik "drugi.txt" i wykonuje zapis: dwa znaki nowej linii (co skutkuje dwiema pustymi liniami na początku) oraz wartość 100. Po zamknięciu pliku finalny efekt działania programu to: pusty "pierwszy.txt" oraz "drugi.txt" zawierający 100 poprzedzone dwiema pustymi liniami.
Dlaczego pozostałe odpowiedzi są błędne?
- Warianty, w których "pierwszy.txt" nadal zawiera 5 i 5.5, pomijają skutek ponownego open() (truncacja).
- Warianty, w których 5.5 trafia do "drugi.txt", są sprzeczne z kodem: do "drugi.txt" zapisywane jest wyłącznie endl, endl i 100.
- Wariant "pierwszy.txt = 100" nie zgadza się z instrukcjami zapisu: liczba 100 pojawia się dopiero po otwarciu "drugi.txt".
W praktyce, aby nie tracić danych przy ponownym otwarciu pliku do zapisu, stosuje się dopisywanie (tryb append) albo inne kombinacje trybów zależnie od potrzeb. Na egzaminie warto zawsze śledzić stan pliku po każdej operacji close() i open().