Zeile mit Leerzeichen und gleichzeitigen Rename oder Copy?



  • padthink:padthink schrieb:

    Die Erste Zeile sieht so aus(ohne Zeilenumbruch):
    FIRMA : 01 RMW FEHLERPROTOKOLL AUTOMATISCHE BUCHUNG DTA MIETER DATUM : 23.10.03

    Und das soll einen gültigen Dateinamen ergeben? Zumindest bei den Doppelpunkten dürfte Windows sich querstellen.



  • ist mir vorher dann aufgefallen, danke !! ;-).



  • Hallo habe ein ähnliches Problem

    int main(int argc, char *argv[])
    {
            while (in.good())
        {
              ofstream out(argv[1].bak); //hier soll ein Bakup enstehen von der alten datei die nachher überschrieben wird
              do
              {
              getline(in,buffer,'\n');
              out<<buffer<<endl;
    
              if( myZeile.isZuAendern() && !myZeile.functionIsFinished()) 
              {
                  myZeile.appendZeile(buffer);                  
              }
              else
              {
                  vec.push_back( myZeile );
                  myZeile.setZeile( buffer );
              }
              myZeile.setdelSpace();
              }
              while (in.good());
              out.close();
    
        }
    
    }
    

    Bekomme es nicht hin das .bak anzuhängen, hab das array schon in einem String gespeichert plus das bak doch leider nimmet er es oben in der funktion nicht mehr an.
    Danke im voraus

    Gruß Thomas



  • 'argv[1].bak' ist ja auch Käse - du solltest den Dateinamen lieber per String-Konkatenation zusammensetzen:

    string filename = argv[1];
    filename += ".bak";
    ofstream out(filename.c_str());
    

    (wenn du sehr verzweifelt bist, kannst du auch strcat() verwenden)



  • Danke für deine Antwort,
    hab jetzt nur noch das problem das ich argv[1] überprüfen will das es nicht leer ist weil so gibt es immer wieder fehler.



  • Und was ist so schwer daran, argv[1] zu überprüfen?



  • Irgendwie steh ich wohl auf dem Schlauch,
    hab verschiedene möglichkeiten schon getestet

    if(argc <= 1)
    if(argv[1]=="")
    if(argv[1]=='')
    


  • Auf ihnhalt überprüfen geht

    if(temp=="Hilfe"||temp=="hilfe")
        {
           system("cls");
           cout<<"******************** Hilfe ********************"<<endl<<endl;
           return(0);
        }
    

    aber ich will überprüfen ob er leer ist weil sonst stürzt das programm ab wenn ich keinen Parameter übergebe



  • Die Überprüfung von argc sollte eigentlich funktionieren, um die "kein Parameter angegeben" abzufangen. Alternativ kannst du auch argv[1] mit dem NULL-Zeiger vergleichen oder strcmp() darauf loslaufen lassen (solange du noch nackte char* in der Hand hältst, taugt der Vergleichsoperator nicht wirklich).



  • das hab ich auch schon probiert

    if(argv[1]==NULL)
    


  • Hab jetzt folgenden Code

    if(strcmp(argv[1],argv[2])==0)
        {
           cout<<"Bitte dateinamen bei Aufruf des Programms eingeben"<<endl;
           cout<<"Fuer Hilfe bitte Programm mit Parameter \"Hilfe\" aufrufen"<<endl;
           return(0);
        }
    

    müsste ja stimmen weil wenn kein Parameter übergeben wird kann auch der andere parameter nicht vorhanden sein.

    doch leider stellt mein programm immer wieder einen fehler fest und muss beendet werden
    wenn ich parameter übergebe funktioniert das prog.
    hab das Programm mal mit .....exe test test gestartet und es geht in die if schleife rein



  • Wenn du keine Parameter angegeben hast, ist argv[0] der Programmname*, argv[1]==NULL und weitere Elemente nicht definiert (also Datenmüll). Für die Abfrage, ob überhaupt Parameter übergeben wurden, solltest du besser argc auswerten (das liefert die Anzahl der angegebenen Parameter inklusive des Programmnamens).

    * Ehe ich hier den ANSI Standar an den Kopf geworfen bekomme: Genau genommen ist nicht festgelegt, was in argv[0] stehen soll - aber in der Regel ist's der Programmname.



  • ja es ist der Programmname.
    wenn ich es über argc<=1 macht er auch nicht
    wenn ich strcmp(argv[1],argv[2])==0) anwende und nur einen parameter eingebe stürzt das prog ab



  • Tomas schrieb:

    wenn ich es über argc<=1 macht er auch nicht

    Was heißt hier "macht er nicht"? Zeig doch mal etwas Code.

    (und eventuell solltest du dir mal ausgeben lassen, was tatsächlich in argc drinsteht)



  • Hallo
    hab den Fehler endeckt.
    ich weiße bevor ich die überprüfung von argv[1] mach weiße argv[1] einem String zu und deswegen gab es probleme.
    Danke für deine Hilfe


Anmelden zum Antworten