ausnahmefehler



  • Wie kann man es programmieren , das in einer Textdatei nur Zahlen und keine Buchstaben stehen dürfen.



  • Unter anderem mit if-Abfragen.



  • Das ist mir schon klar aber wie definiere ich Buchstaben



  • if(isalpha(buchstabe))
    ...

    ?

    Stell mal konkretere Fragen, dann erhälst du konkretere Antworten.



  • Wie kann man es programmieren , das in einer Textdatei nur Zahlen und keine Buchstaben stehen dürfen.

    Ich würde mal sagen, prinzipiell gar nicht.



  • In der Windowsprogrammierung kann man folgendes tun:

    Man nehme ein Memo (ich nenn es mal Memo1):

    int i, j;
    bool ziffer=true;
    Memo1->Lines->LoadFromFile(String);   // lädt eine Textdatei in Memo1
    for(i=0;Memo1->Lines->Strings[i]!="";i++)   // geht Memo1 so lange durch,
                                                    // bis Zeile i von Memo1="" ist
       for(j=0;j<Memo1->Lines->Strings[i].Length();j++) // geht jedes einzelnes
                                                            // Zeichen der
                                                            // Zeile durch
       if (!IsDigit(Memo1->Lines->Strings[i][j]))           // Wenn Zeichen
                                                            // keine Ziffer ist
       {
          ziffer=false;
          break;
       }
    // Ende der for(;;)-Schleifen
    if (!ziffer)
    {
       // Hier kommen die Anweisungen hin, wenn ein Zeichen keine Ziffer ist
    }
    


  • Hi!

    @Spieleprogrammiere

    Was du vorschlägst ist aber leider Borlandspezifisch und somit wohl nicht das was <sunny> sucht.



  • Original erstellt von PuppetMaster2k:
    **Hi!

    @Spieleprogrammiere

    Was du vorschlägst ist aber leider Borlandspezifisch und somit wohl nicht das was <sunny> sucht.**

    Naja, fast, man müsste noch das Objekt Memo deklarieren, definieren und sowas, das ist bei Borland schon drin, ok.

    Aber hier mal die Lösung für alle Konsolenprogrammierer:

    #include<iostream>
    #include<sstream>
    #include<cstdlib>
    using namespace std;
    main()
    {
       string str, temp;
       int i;
       bool ziffer=true;
       ifstream lesen=fopen("Datei.txt");
       ofstream schreiben=fopen("Datei.txt");
       for(i=0;lesen[i]!='\0';i++)
       {
          lesen>>temp; // Liest nur bis Leerzeichen in Datei.txt
          str=str+temp; // addiert zum String
          temp.erase(0);
          schreiben<<temp;
       }
       fclose(lesen);
       for(i=0;i<str.length();i++)
          if (!isdigit(str[i]))
          {
             ziffer=false;
             break;
          }
       if (!ziffer)
          cout<<"Dies ist keine Zahl!";
       else
          cout<<"Dies ist eine Zahl!";
       schreiben<<str;
       fclose(schreiben);
       cin.get();
    }
    

    [ Dieser Beitrag wurde am 26.05.2003 um 11:41 Uhr von Spieleprogrammierer editiert. ]

    [ Dieser Beitrag wurde am 26.05.2003 um 11:42 Uhr von Spieleprogrammierer editiert. ]



  • ifstream lesen=fopen("Datei.txt");
    ofstream schreiben=fopen("Datei.txt");

    Na das passt nicht. fopen liefert einen Zeiger auf die Struktur FILE zurück.
    Das was da steht ist somit falsch.

    Es müsste heissen:

    ifstream lesen("Datei.txt");

    Zudem ist es keine gute Idee die Datei zum lesen und separat zum schreiben auf einmal zu öffnen.


Anmelden zum Antworten