main
No notes
Syntax:
C++
//Schritt 1: Person einlesen und Zeile ausgeben #include <iostream> using namespace std; #include <string.h> #include <string> #include <stdlib.h> #include <fstream> struct person { char name[60]; char id[20]; char url[60]; //raus? //int ordnungsnummer; //dient als zaehlvariable des array, raus aus struct }; enum zustand {imNamen, inId, ignoriereUrl, vorOrdnungsnummer, inOrdnungsnummer}; //inUrl=Ignorieren struct person personen [800]; int ordnungsnummer = 0; //Array Zaehlvariable void druckePersonen(); void suchePersonen(); int main() { //struct person personen; char puffer[100],zeichen; int zaehler; enum zustand zustand; ifstream datei; datei.open("personen.txt"); //ab hier auslagern suchePersonen(); zustand=vorOrdnungsnummer;//Startzustand zaehler=0; for (;;) { datei.get(zeichen); if (datei.eof())break; switch(zeichen) { case '"': break; case ' ': if (zustand == vorOrdnungsnummer)//entweder doppeltes Leerzeichen vor Ordnungnummer: dann ignorieren... { break; } if (zustand == inOrdnungsnummer)//oder Leerzeichen nach Ordnungsnummer, dann: war das die Ordnungsnummer { puffer[zaehler]='\0'; zaehler=0; ordnungsnummer=atoi(puffer); //schreibe in Puffer, mache aus den Ziffern eine Zahl (personen.ordnungsnummer) zustand=imNamen; //erwarte Name der Person //cout << "Gelesen: " << "Ordnungsnummer: " << personen.ordnungsnummer << endl; break; } if (zustand==imNamen)// war das ein Name { datei.get(zeichen); //pruefe ob Leerzeichen letztes=also Ende des Namen ist: nimm Zeichen nach Leerstelle mit auf... if (zeichen=='(') //...ist es ein ( ->ist Name zu Ende { puffer[zaehler]='\0'; zaehler=0; strcpy(personen[ordnungsnummer].name,puffer); zustand=inId;//erwarte wir nun ID personen[ordnungsnummer].name; //im Array abspeichern //cout << "Gelesen: " << "Name: " << personen.name << endl; } else //...ist es kein ( ->lege das Zeichen zurueck { datei.putback(zeichen); puffer[zaehler]=' '; zaehler++; } break; } case '(': zaehler=0; break; //ignoriere Klammer-auf case ')': //das war ID puffer[zaehler]='\0'; zaehler=0; strcpy(personen[ordnungsnummer].id,puffer); zustand=ignoriereUrl; personen[ordnungsnummer].id; //cout << "Gelesen: " << "ID: " << personen.id << endl; break; case '\n': zaehler=0; zustand=vorOrdnungsnummer; //soll URL ignorieren break; default: if (zustand==vorOrdnungsnummer) { zustand=inOrdnungsnummer; } puffer[zaehler]=zeichen; zaehler++; break; } } datei.close(); for (int i=0; i<800; i++) { druckePersonen[i]; } } void druckePersonen(int i) { cout << i << " Name: " << personen[i].name << " ID: " << personen[i].id << endl; } void suchePersonen(){ int ausgabePerson; cout << "Welche Person möchten sie ausgeben?"; cin >> ausgabePerson; druckePersonen(ausgabePerson); }