C++ nie można wczytać danych do struktury
Ostatnio zmodyfikowano 2013-01-19 12:59
przemo098 Temat założony przez niniejszego użytkownika |
C++ nie można wczytać danych do struktury » 2013-01-19 10:29:57 W skrócie Mam strukture: struct komorka { char marka[ 10 ]; char typ[ 10 ]; char model[ 20 ]; char imei[ 15 ]; }; Tutaj wskaźnik komorka * wsko; wsko = new komorka[ 100 ]; I teraz problem: getline( plik,( wsk + i )->typ ); Ale jak chcę wczytać do struktury dane z pliku wyskakuje: no matching function for call to 'getline(std::fstream&, char [10])'| Jak bym to wczytywał to normalnej zmiennej typu string to działa ale jak dołączona jest struktura to niestety nie :/ tutaj wrzucam cały program: problem jest w 35 linijce : / #include <iostream> #include <conio.h> #include <stdio.h> #include <string.h> #include <cstdlib> #include <fstream>
using namespace std;
struct komorka { char marka[ 10 ]; char typ[ 10 ]; char model[ 20 ]; char imei[ 15 ]; };
int odczyt_danych( komorka * wsk, int i ) { fstream plik( "plik.txt", std::ios::in ); string dane[ 100 ]; char tab[ 100 ]; for( int i = 0; plik.fail() == 0 && i < 100; i++ ) { getline( plik, dane[ i ] ); getline( plik,( wsk + i )->typ ); getline( plik,( wsk + i )->model ); getline( plik,( wsk + i )->imei ); } };
void dodaj_kom( komorka * wsk, int i ) { do { system( "cls" ); cout << "\nPodaj marke Komorki: "; cin >>( wsk + i )->marka; } while( strlen(( wsk + i )->marka ) > 10 ); cout << "Podaj typ: "; cin >>( wsk + i )->typ; podaj_imei: do { cout << "Podaj imei telefonu: "; cin >>( wsk + i )->imei; if( strlen(( wsk + i )->imei ) != 15 ) cout << "\nPodany Imei jest za krotki prosze podac dluzszy (15 cyfrowy)"; } while( strlen(( wsk + i )->imei ) != 15 ); for( int a = 0; a < 14; a++ ) { if( isdigit(( wsk + i )->imei[ a ] ) == 0 ) { goto podaj_imei; cout << "Imei sklada sie tylko i wylacznie z cyfr !!"; } } cin.sync(); do { cout << "Podaj model telefonu: "; cin.getline(( wsk + i )->model, 20 ); } while( strlen(( wsk + i )->model ) > 20 ); cout << "\nKomorka zostala umieszczona w bazie."; cout << "\nNacisniecie dowolnego klawisza spowoduje powrot do menu glownego."; cin.sync(); getch(); };
void wyszukiwanie( komorka * wsk, int dodaj ) { system( "cls" ); cout << "Podaj Marke / Imei / typ lub model telefonu:\n"; string fraza; cin >> fraza; for( int i = 0; i < dodaj; i++ ) { if(( wsk + i )->imei == fraza ||( wsk + i )->marka == fraza ||( wsk + i )->typ == fraza ) { cout << "Osoba nr: " << i + 1 << "\n\n"; cout << "Marka:" <<( wsk + i )->marka << "\n"; cout << "Typ: " <<( wsk + i )->typ << "\n"; cout << "imei:" <<( wsk + i )->imei << "\n"; cout << "Model:" <<( wsk + i )->model << "\n"; } } };
void wyswietl( komorka * wsk, int dodaj ) { system( "cls" ); cout << "W bazie znajduje sie nastepujaca liczba osob: " << dodaj << "\n"; for( int i = 0; i < dodaj; i++ ) { cout << "Osoba nr: " << i + 1 << "\n"; cout << "Marka:" <<( wsk + i )->marka << "\n"; cout << "Typ: " <<( wsk + i )->typ << "\n"; cout << "Imei:" <<( wsk + i )->imei << "\n"; cout << "Model:" <<( wsk + i )->model << "\n"; } cout << "Nacisniecie dowolnego klawisza spowoduje powrot do menu glownego."; getch(); };
void deszyfracja( komorka * wsk, int dodaj ) { system( "cls" ); char imei_deszyfrowane[ 15 ]; if( strlen(( wsk )->typ ) == 0 && strlen(( wsk )->model ) == 0 ) { cout << "Baza jest pusta prosze ja uzupelnic.."; getch(); } cout << "\n\nPodaj Imei:"; cin >> imei_deszyfrowane; for( int i = 0; i < dodaj; i++ ) { if( strncmp( imei_deszyfrowane,( wsk + i )->imei, 8 ) == 0 ) { cout << "Model:" <<( wsk + i )->model << "\n" << "Marka:" <<( wsk + i )->marka; break; } if( i == dodaj - 1 ) { cout << "W baza nie posiada takiego Imei, prosze sprawdzic poprawnosc Imei badz dodac go do bazy\n\n\n\nAle podam ci marke: "; } if( imei_deszyfrowane[ 6 ] == '3' && imei_deszyfrowane[ 7 ] == '0' ) { cout << "Jest to Sony Ericson"; } if( imei_deszyfrowane[ 6 ] == '1' && imei_deszyfrowane[ 7 ] == '0' ) { cout << "Jest to Nokia"; } if( imei_deszyfrowane[ 6 ] == '4' && imei_deszyfrowane[ 7 ] == '0' ) { cout << "Jest to Motorola"; } if( imei_deszyfrowane[ 6 ] == '6' && imei_deszyfrowane[ 7 ] == '0' ) { cout << "Jest to Alcatel"; } } cout << "Nacisniecie dowolnego klawisza spowoduje powrot do menu glownego."; getch(); };
int main() { komorka * wsko; wsko = new komorka[ 100 ]; int dodaj = 0, wybor, i; int b; char szukaj; odczyt_danych( wsko, dodaj ); cout << "Co chcesz zrobic ??"; do { cout << "\n\n[1] - dodaj komorke \n"; cout << "[2] - wyszukaj komorke \n"; cout << "[3] - wyswietl baze komorek\n"; cout << "[4] - deszyfracja imei \n"; cout << "[5] - wyjscie z programu \n"; cin >> b; switch( b ) { case 1: dodaj_kom( wsko, dodaj ); dodaj++; break; case 2: wyszukiwanie( wsko, dodaj ); break; case 3: wyswietl( wsko, dodaj ); break; case 4: deszyfracja( wsko, dodaj ); break; case 5: cout << "\n\nNastapil koniec programu"; break; default: cout << "Blad, podano nieprawidlowa wartosc"; } } while( b != 5 ); return 0; }
|
|
m4tx |
» 2013-01-19 10:33:51 |
|
przemo098 Temat założony przez niniejszego użytkownika |
» 2013-01-19 12:59:27 Widać wyraziłem się za mało starannie :(, to jest Czytanie z Pliku.. problem rozwiązałem tak: getline( plik, dane );
p =& dane[ 0 ]; strcpy(( wsk + i )->marka, p ); Dobrze zrobiłem ? Czy da się to jakoś łatwiej obejść ? |
|
« 1 » |