Witam,
napisałem niedawno program pobierający od użytkownika zestawy danych typu: imię, nazwisko, numer telefonu, coś w stylu programu z kursu p. Zelenta z odcinka o plikach tekstowych, tylko bardziej rozbudowany.
Zająłem się napisaniem pierwszego przypadku, czyli takiego, w którym program pyta się, ile zestawów danych użytkownik chce wpisać, prosi o podanie tych danych, zapisuje je do tablicy, a następnie przekazuje je do pliku, wykorzystałem w tym celu wskaźniki. Program poniżej (z paroma komentarzami):
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>
#include <cstring>
using namespace std;
int ile;
char wybor;
int main()
{
// Wyswietlenie menu glownego
cout << "Witaj!" << endl;
cout << "1. Utworzenie nowego pliku." << endl;
cout << "2. Zastapienie danych istniejacego pliku." << endl;
cout << "4. Nadpisanie danych istniejacego pliku." << endl;
cout << "5. Wyswietlenie danych istniejacego pliku." << endl;
cout << "6. Wyjscie z programu."<<endl;
cout << "Co chcesz zrobic? Wybierz wlasciwy numer: ";
wybor=getch(); // Pobranie znaku z klawiatury
switch(wybor)
{
case '1': // Wykonaj, je¿eli uzytkownik chce utworzyc nowy plik
{
system("cls");
cout << "Ile zestawow danych zawierajacych: ";
cout << endl << "imie osoby,";
cout << endl << "nazwisko osoby,";
cout << endl << "numer telefonu osoby,";
cout << endl << "chcesz podac?";
cin >> ile; // Zapisanie do zmiennej 'ile' ilosci zestawow danych
system("cls"); // Wyczyszczenie zawartosci ekranu
string *imie, *nazwisko;
int *nr_tel;
imie = new string [ile]; // Utworzenie tablicy do imion
nazwisko = new string [ile]; // Utworzenie tablicy do nazwisk
nr_tel = new int [ile]; // Utworzenie tablicy do numerow telefonow
for(int i=0; i<ile; i++) // Podanie danych
{
cout << "Podaj "<<i+1<<". imie: ";
cin >> *imie;
cout << "Podaj "<<i+1<<". nazwisko: ";
cin >> *nazwisko;
cout << "Podaj "<<i+1<<". numer telefonu: ";
cin >> *nr_tel;
imie++; nazwisko++; nr_tel++;
system("cls"); // Wyczyszczenie ekranu po podaniu danych dla jednego zestawu
}
fstream plik; // Utworzenie zmiennej do operacji na pliku tekstowym
plik.open("zestawy_danych.txt", ios::out); // Otworzenie pliku tekstowego
for(int i=0; i<ile; i++) // Przekazanie danych z tablic do pliku
{
plik<<imie[i]<<endl;
plik<<nazwisko[i]<<endl;
plik<<nr_tel[i]<<endl;
}
plik.close(); // Zamkniecie pliku
delete [] imie; delete [] nazwisko; delete [] nr_tel; // Zwolnienie pamieci
break; // Przerwanie case'a '1'
}
}
return 0;
}
Program działa poprawnie do momentu podania wszystkich zestawów danych. Potem na konsoli miga biały kursor i nic dalej się nie dzieje. Plik tekstowy jednak został utworzony (znajduje się w folderze projektu), ale jest pusty. Ktoś miałby pomysł, co może być w programie nie tak? Czy jest to problem z czymś innym? Prosiłbym o jak najprostsze wyjaśnienia ;)