AndrzejS00 Temat założony przez niniejszego użytkownika |
[C++] Przekazywanie struktur do funkcji, getline » 2017-03-11 20:56:29 Witam, po dłuższej przerwie w programowaniu wracam i napotykam problem związany z... w sumie ciężko powiedzieć.
Problem może być związany z brakiem poprawności w zapisie, czymś błahym, trywialnym, wcześniej nie stosowałem struktur na taką skalę.
Problem jest w tym, że program nie dopisuje do pliku tekstowego pewnych danych, które zawierają się w strukturach. Kilka razy próbowałem modyfikować kod, niewiele pomogło. A miało być tak pięknie...
Proszę o pomoc, z góry dzięki :)
PS: Pliki i odpowiednie foldery oczywiście istnieją, dostęp do dysku jest, to nie jest związane z ich brakiem. PS-2: Coś nie tak z pętlą do while w funkcji void form, teoretycznie wpisanie czegoś nieodpowiedniego do programu, np. liter, wyrazów powinno spowodować powtórzenie się pętli, a tak się nie dzieje.
#include <iostream> #include <string> #include <fstream> #include <conio.h> #include <windows.h> void powit(); void opening(std::fstream &); void form(struct struk &); void write(std::fstream &, struct struk &); struct struk{ std::string imie; std::string nazwisko; std::string adres; std::string miejscowosc; std::string kod_poczt; long long telefon; std::string notatki; }; int main() { std::fstream dest; struk klient; powit(); opening(dest); form(klient); write(dest, klient); } void powit() { using std::cout; cout << "Form #1\n\nThis program helps you to fill in customer's table in one writing system!\n\n"; cout << "Loading"; for (int i = 0; i!=5; i++) { cout << "."; Sleep(1000); } } void opening(std::fstream & dest) { using std::cout; using std::ios; dest.open("Tabels\\Customers.txt", ios::in|ios::app); if (!(dest.good())) { cout << "\n\nError 101 - Harddisk is non accessable.\n\nPress any key to exit!"; getch(); exit(0); } } void form(struct struk & klient) { using std::cout; using std::cin; using std::getline; long long a; cout << "Success!\n\n"; cout << "Name: "; getline(cin, klient.imie); cout << "Surname: "; getline(cin, klient.nazwisko); cout << "Adress: "; getline(cin, klient.adres); cout << "Place: "; getline(cin, klient.miejscowosc); cout << "Postal Code: "; getline(cin, klient.kod_poczt); do { cout << "Phone Number: "; cin >> a; cin.clear(); cin.sync(); } while(!cin.good()); klient.telefon = a; cout << "Notes: "; getline(cin, klient.notatki); } void write(std::fstream & dest, struct struk & klient) { using std::cout; cout << "Writing"; for (int i = 0; i!=5; i++) { cout << "."; Sleep(1000); } std::string linia; int o = 1; while (!dest.eof()) { std::getline(dest, linia); if (linia=="---") o++; } dest << "---\n"; dest << "ID=" << o << "\n"; dest << "Name=" << klient.imie << "\n"; dest << "Surname=" << klient.nazwisko << "\n"; dest << "Adress=" << klient.adres << "\n"; dest << "Place=" << klient.miejscowosc << "\n"; dest << "PostalCode=" << klient.kod_poczt << "\n"; dest << "PhoneNumber=" << klient.telefon << "\n"; dest << "Notes=" << klient.notatki << "\n"; }
PS-3: To mój pierwszy temat na forum, starałem się znaleźć rozwiązania problemu w internecie, może nie tego, co trzeba szukałem, proszę o wyrozumiałość
A.S. |
AndrzejS00 Temat założony przez niniejszego użytkownika |
» 2017-03-11 22:21:43 @up Dzięki za odpowiedź i rozwiązanie, teraz wszystko działa. Podpowiedziałeś mi w czym mniej więcej tkwi problem, wpisałem w wyszukiwarkę to co trzeba i już rozumiem, dlaczego program nie zapisywał do pliku. Gdyby ktoś miał taki sam problem:
Link do innego tematu-rozwiązania na forum: http://cpp0x.pl/forum/temat/?id=19776
Jeszcze raz dzięki, pozdrawiam, A. S. :)
|