tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
32
ZUGRIFFE
676
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Guten Morgen ihr Programmier meister
    Mein Titel erklärt mein Problem jetzt nicht wirklich, mir ist aber kein besserer Titel eingefallen

    Meine Frage ist folgendes. Ich gebe mal ein Beispiel.

    Wir haben ein Programm das uns eine Logdatei ausließt diese verändert und wieder abspeichert.

    Meine Frage ist jetzt.
    Ist es möglich das der Name der Datei nicht fest im Quellcode gegeben ist, sondern der User einen Namen angeben kann wie die Datei heißen soll?
    Zum Beispiel acces%heutigesDatum%.log oder so

    Mit freundlichen Grüßen
    Paper
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    natürlich ist das möglich.
    Welche Programmart ist es denn (Konsole?)

    Und seoll der Benutzer wirklich "%heutigesDatum%" oÄ. eingeben,
    dass dann durch das echte Datum ersetzt wird,
    oder war das jetzt nur im Forum als Platzhalter gedacht?
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Hallo sheel,

    Ja genau es ist in einer Konsole

    %heutigesDatum% war als PLatzhalter gedacht, hab es doof erklärt.
    Das die Eingabe z.B "Acces" ist und das heutige Datum wird halt automatisch dahinter gehangen für jeden Tag wo es gespeichert wird.
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Ah, Moment.
    Ich glaub, hab was falsch verstanden.

    Du willst keinen Log erstellen, sondern eine vorhandene Datei auslesen?
    Bzw. mehrere alte Dateien von verschiedenen Zeitpunkten?

    In welchem Format ist denn das Datum?
    Für 01.01.2000 "Acces01012000.log", oder ist da auch eine Uhrzeit dabei,
    oder das Jahr zuerst, oder...?

    Ist es für die erarbeitung wichtig, wann die Logdatei erstellt wurde,
    oder ist das im Prinzip nur zum Datei-unterscheiden?
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  5. #5
    Avatar von Jennesta
    Jennesta Jennesta ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Aachen
    Beiträge
    215
    Hallo,
    also ich würde es durch <string.h> und/oder <string> realisieren.
    Die Uhrzeit dürftest du durch <time.h> bekommen, wenn nicht schon vorhanden.
     
    Was soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.

  6. #6
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Also ich habe ein Programm das einen Squid ausliesst nenn wir den "Squid1". Den Unix Timestamp der da drin steht den Wandelt er in ein Datum + Uhrzeit um. Soweit funktioniert es auch. Und diese Umwandlung schreibt er nochmal in eine andere txt Datei. Ich hab es aber nur so das es im Quellcode angegeben ist wie die Datei heißt. Ich zeige euch mal den Code.


    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    //Festlegen des Pfades für die Output-Datei
      FILE *fileOutput;
      fileOutput = fopen("SquidNEU.log", "w");
     
     
     
      //Überprüfung, ob Datei vorhanden ist
      if(NULL == fileOutput) {
        fprintf(stderr, "Fehler beim Oeffnen ...\n");
        return EXIT_FAILURE;
      }
     
      //Festlegen des Pfades für die Input-Datei
      FILE *fileInput;
      fileInput = fopen("squid123.log", "r");
     
      //Überprüfung, ob Datei vorhanden ist
      if(NULL == fileInput) {
        fprintf(stderr, "Fehler beim Oeffnen ...\n");
        return EXIT_FAILURE;

    und wie man sieht, bei der Output und Input Datei ist der Name fest angegeben. Meine frage halt ob es möglich ist dort den Namen Variabel zu machen=)


    Zitat Zitat von sheel Beitrag anzeigen
    In welchem Format ist denn das Datum?
    Für 01.01.2000 "Acces01012000.log", oder ist da auch eine Uhrzeit dabei,
    oder das Jahr zuerst, oder...?
    Ja genau so kann man es machen wie du geschrieben hast "Access0101200.log" hauptsache das noch das Datum dabei steht



    Zitat Zitat von Jennesta Beitrag anzeigen
    Hallo,
    also ich würde es durch <string.h> und/oder <string> realisieren.
    Die Uhrzeit dürftest du durch <time.h> bekommen, wenn nicht schon vorhanden.
    Hmm..Nur ich weiß halt nicht wie ich es so hinkriege das es im Dateinamen steht..
    Geändert von Paper (24.11.11 um 10:42 Uhr)
     

  7. #7
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Zuerst liest du mit gets das Wunsch-Präfix in ein zB. "char prefix[1024]" ein.
    Kopier das mit strcpy in einen zweiten String (hier format)
    und häng mit strcat "%8d.log" an format an.

    Such mit FindFisrFile bzw. FindNextFile das ganze Verzeichnis durch.

    Auf jeden Dateinamen machst du ein
    Code cpp:
    1
    
    sscanf(...dateiname..., format, &datum)
    wobei datum ein int ist.
    Wenn der Returnwert von sscanf 1 ist,
    hast du eine passende Logdatei.

    Verarbeiten.

    Den neuen Dateinamen für die Ausgabedatei bekommst du mit
    Code cpp:
    1
    
    sprintf(x, "%s%8dNeu.log", prefix, datum);
    in einen String x.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  8. #8
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    hmm ich weiß zwar was du meinst..aber mit der umsetzung klappts i.wie nicht...habe nicht wirklich 'ne Ahnung wie ich das da rein bringen soll :/
     

  9. #9
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Warum zeigst du dann nicht deinen Versuch?
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  10. #10
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    
    int logConvert()
    {
    //Wunsch-Präfix
    char namee[1024]; 
    char format;
     
    //string kopieren
    strcpy (format, namee);
    strcat (format, "%8");
     
     
      //Zwischenspeicher fürs Einlesen
      char puffer[256];
      int line= sizeof(puffer);
     
      //Trennzeichen
      char del[]="\n";
     
      //Zählvariabeln
      int i =0;
     
      //Festlegen des Pfades für die Input-Datei
      FILE *fileOutput;
      fileOutput = fopen("SquidNEU.log", "w");
     
     
     
      //Überprüfung, ob Datei vorhanden ist
      if(NULL == fileOutput) {
        fprintf(stderr, "Fehler beim Oeffnen ...\n");
        return EXIT_FAILURE;
      }
     
      //Festlegen des Pfades für die Output-Datei
      FILE *fileInput;
      fileInput = fopen("squid123.log", "r");
     
      //Überprüfung, ob Datei vorhanden ist
      if(NULL == fileInput) {
        fprintf(stderr, "Fehler beim Oeffnen ...\n");
        return EXIT_FAILURE;
      }
     
      //solange Zeilen vorhanden sind wird eingelesen
      while(fgets (puffer, line, fileInput))
        {
    /// neue Zeilen
          int len;
          int uxtime;
          if (sscanf(puffer, "%d.%*d%n", &uxtime, &len) >= 1) {
            fprintf(fileOutput, "%s %s", Unix2Date(uxtime, 1), puffer + len);
          }
    ////
        }
     
     
     
     
      //Schließen der Dateien
      fclose(fileInput);
      fclose(fileOutput);
    }

    habs nochmal versucht alles schritt für schritt und folgende Meldung bekomme ich

    213 [Warning] passing arg 1 of `strcpy' makes pointer from integer without a cast
    214 [Warning] passing arg 1 of `strcat' makes pointer from integer without a cast
    Geändert von Paper (25.11.11 um 10:01 Uhr)
     

  11. #11
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Hey Sorry konnte die Tage nicht aber jetzt wieder
    aufjedenfall hab ich was neues versucht grade


    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    //Wunsch-Präfix
    char prefix[1024];
     
     
    //string kopieren und anhängen
    strcpy (prefix, format);
    strcat (format, "%8");
    scanf ("Squid",format, &datum);
     
    sprintf(x, "%s%8dNeu.log", prefix, datum);

    dann meckert der das format nicht deklariert ist. Ist es nicht so das der nicht deklariert sein muss weil der Inhalt von prefix in format kopiert wird? oder versteh ich da i.was falsch?
     

  12. #12
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Alle Variablen die du verwendest müssen deklariert sein.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Zitat Zitat von deepthroat Beitrag anzeigen
    Hi.

    Alle Variablen die du verwendest müssen deklariert sein.

    Gruß
    Achso ich hatte i.wo mal aufgeschnappt dases bei strcpy und irgendwelchen anderen Befehlen nicht nötig wäre. Wenn ich diese Variable deklariere gibt er mir folgende Fehlermeldung aus.

    [Warning] passing arg 2 of `strcpy' makes pointer from integer without a cast
    [Warning] passing arg 1 of `strcat' makes pointer from integer without a cast

    Ich habe nur keine Ahnung wie ich das beheben kann

    Ich glaub ich weiß noch nichtmal wirklich was die meldung von mir will
    was für ein integer? seh da keins :S
     

  14. #14
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Paper Beitrag anzeigen
    [Warning] passing arg 2 of `strcpy' makes pointer from integer without a cast
    [Warning] passing arg 1 of `strcat' makes pointer from integer without a cast

    Ich habe nur keine Ahnung wie ich das beheben kann
    Was erwartet denn strcpy als zweiten Argument-Typ?

    Was hast du stattdessen übergeben?
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  15. #15
    Paper Paper ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    56
    Zitat Zitat von deepthroat Beitrag anzeigen
    Was erwartet denn strcpy als zweiten Argument-Typ?

    Was hast du stattdessen übergeben?
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    //Wunsch-Präfix
    char prefix;
    char format, x, datum;
     
    //string kopieren und anhängen
    strcpy (prefix, format);
    strcat (format, "%8");
    scanf ("Squid.log",format, &datum);
     
    sprintf(x, "%s%8dNeu.log", prefix, datum);

    so sieht das aus =)
     

Ähnliche Themen

  1. Kunden Templates aussuchen lassen?
    Von Necro_nomicon im Forum Content Management Systeme (CMS)
    Antworten: 2
    Letzter Beitrag: 18.03.10, 10:19
  2. Antworten: 4
    Letzter Beitrag: 28.11.04, 18:40
  3. Antworten: 9
    Letzter Beitrag: 26.04.04, 16:09
  4. Aufruf einer Datei aus einer HTML-Datei
    Von EagleMo im Forum HTML & XHTML
    Antworten: 8
    Letzter Beitrag: 10.04.04, 23:54
  5. Start OS aussuchen !
    Von Sebastian im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 30.05.02, 21:05