Wczytanie z pliku do konsoli

tomek555

Użytkownik
Dołączył
Kwiecień 24, 2011
Posty
22
Zapisałem do pliku w postaci struktury tablicy jednowymiarowej dane tj. imie nazwisko jedno pod drugim. Tak jak wyświetlało mi się na konsoli tak zapisałem do pliku strumieniem. Teraz mam problem jak odwołać się żeby mi identycznie odczytało z pliku i wyświetliło na konsoli dane. :/ Jakies pomysły?
 

Shady69

Użytkownik
Dołączył
Luty 12, 2013
Posty
98
użyj php, w skrypcie daj odczytywanie z pliku i wywolanie tak jak chcesz. w konsoli wpisujesz tylko:
php5 /direct/dir/file.php
 

tomek555

Użytkownik
Dołączył
Kwiecień 24, 2011
Posty
22
Chciałbym bazować tylko i wyłącznie na języku c++, gdyż robię to na lekcje. Konkretnie mam do zrobienia zbiór danych. Zastosowałem w tym celu menu (switch) naciskając klawisz 1 chciałbym zapisywać dane do pliku a pod 2 odczytywać dane z pliku.
 
Ostatnia edycja:

meViu

Użytkownik
Dołączył
Kwiecień 8, 2013
Posty
223
Chciałbym bazować tylko i wyłącznie na języku c++, gdyż robię to na lekcje. Konkretnie mam do zrobienia zbiór danych. Zastosowałem w tym celu menu (switch) naciskając klawisz 1 chciałbym zapisywać dane do pliku a pod 2 odczytywać dane z pliku.

Pokaż funkcję zapisującą dane do pliku to napiszę Ci funkcję odczytującą.
 

tomek555

Użytkownik
Dołączył
Kwiecień 24, 2011
Posty
22
switch(wybor)
{
case 1:
{ cout<<"ile osob chcesz dodac? --- ";cin>>ile;
system("cls");
dane T[ile];
for(p=0;p<ile;p++)
{
cout<<"\nIMIE ---------- "; cin>>T[p].a1;
cout<<"\nNAZWISKO ------ "; cin>>T[p].a2;
cout<<"\nWIEK ---------- "; cin>>T[p].a3;
cout<<"\nPESEL --------- "; cin>>T[p].a4;
cout<<"\nMIESCOWOSC ---- "; cin>>T[p].a5;
cout<<"\nULICA --------- "; cin>>T[p].a6;
cout<<"\nNUMER DOMU ---- "; cin>>T[p].a7;
cout<<"\nTEL.KOM ------- "; cin>>T[p].a8;

}
plik.open("dane.txt", ios::eek:ut);

for(p=0;p<ile;p++)
{

plik<<"\nIMIE ---------- "<<T[p].a1;
plik<<"\nNAZWISKO ------ "<<T[p].a2;
plik<<"\nWIEK ---------- "<<T[p].a3;
plik<<"\nPESEL --------- "<<T[p].a4;
plik<<"\nMIESCOWOSC ---- "<<T[p].a5;
plik<<"\nULICA --------- "<<T[p].a6;
plik<<"\nNUMER DOMU ---- "<<T[p].a7;
plik<<"\nTEL.KOM ------- "<<T[p].a8;

}

plik.close();
*/

case 2:
{//tu chciałbym odczytac to co wczesniej wpisałem do pliku
}
}
 

meViu

Użytkownik
Dołączył
Kwiecień 8, 2013
Posty
223
Po pierwsze tu masz błąd:
Kod:
dane T[ile];
Obecny standard języka nie umożliwia tworzenia tablic o nie znanej liczbie elementów w czasie kompilacji, fakt to się skompiluje ale de facto jest to błąd, ten mechanizm ma być dostępny w następnych standardach, powinieneś użyć tablic dynamicznych.

Po drugie jak można nazwać składowe klasy a1, a2, a3 itp ? :O

Po trzecie jeśli chcesz zapisywać swoje dane w ten sposób co ukazałeś musiałbyś napisać własny parser aby z wczytanych danych znów utworzyć obiekt klasy, jeśli nie chcesz tak się bawić spróbuj zapisywać obiekty klasy binarnie a następnie wczytywać je binarnie.

W dodatku fatalne formatowanie kodu, zmienne powinno nazywać się w języku angielskim.
 

tomek555

Użytkownik
Dołączył
Kwiecień 24, 2011
Posty
22
Ostatnia edycja:

mto9

Użytkownik
Dołączył
Kwiecień 20, 2011
Posty
81
Mógłby mi ktoś przy okazji wyjasnić kod:
http://peb.pl/programowanie/567866-c-porgram-baza-danych-samochodow.html
a mianowicie co to znaczy argv[1]? Widzę że jest przypisane to do nazwy pliku "baza.txt" ale dlaczego akurat argv[1]? W głównym programie jest to użyte właśnie tak:
dodaj_do_bazy(argv[1],s,n) a w funkcji dodaj_do_bazy pierwszym argumentem jest char *in. O co tu biega?

Funkcja main może wyglądać dwojako.
Opcja 1:
Kod:
int main()
Wykorzystywana jeśli nie chcemy przesyłać do programów żadnych parametrów wejściowych.

Opcja 2:
Kod:
int main(int argc,char **argv)
Wykorzystywana kiedy chcemy przesłać do programu jakieś parametry wejściowe.
Jak to wygląda w praktyce ? a więc uruchamiamy "cmd" , przechodzimy do katalogu gdzie znajduje się nasz program który nazywa się "program.exe" i wtedy możemy użyć go uruchomić np tak:
program.exe file.txt
oznacza to że literał "file.txt" jest przesłany do funkcji main, funkcja main ma dwa argumenty
Pierwszy argument "int argc" określa liczbą parametrów które zostały przesłane do funkcji mail plus jedna dla nazwy programu tak więc dla uruchomienia:
program.exe file.txt -> argc == 2
program.exe file.txt 4 5 -> argc == 4
program.exe -> argc == 1
Drugi parametr char **argv to wskaźniek to literałów które zostały przekazane, tak więc dla:
program.exe file.txt 4 5
argv[0] == "program.exe"
argv[1] == "file.txt"
argv[2] == "4"
argv[3] == "5"
 
Do góry Bottom