[C]Dateiinhalt in String speichern



  • Danke erstmal,
    aber mir ist nicht ganz klar was ich mit

    gelöscht
    

    anfangen soll.

    Will ja die Daten aus meiner data.txt auslesen, sonst hätte ich das auch anders lösen können.

    Ich hoffe ist verständlich was ich meine? Auslesen würde soweit ja klappe aber eben nur den kompletten Dateiinhalt, leider weiß ich aber bisher nicht wie ich den Inhalt dann in meinem Programm verarbeiten kann.



  • bethebe schrieb:

    Danke erstmal,
    aber mir ist nicht ganz klar was ich mit
    ...
    anfangen soll.

    Das ist schon gut so, wenn es funktioniert. Statt von einem String mit sscanf() zu lesen, kannst du genauso von einer Datei mit fscanf() lesen.
    🙂



  • Ja das gibt irgendwie sinn 🙂

    Ich frag jetzt mal ganz doof wie ungefähr würde das denn aussehen.
    Ich poste ma meinen Code, bin mir auch was das auslesen der Datei angeht leider nicht ganz sicher. Bin auch noch recht neu im C-Pgogrammieren, und hab diese aufgabe von meinem Chef bekommen, deshalb muss ich mich da jetzt bissel durchwühlen.

    FILE *f;
    char puffer[BUF];
    char file[1000];
    f=fopen("data.txt","r");
    if(f == NULL) {
        printf("Fehler beim öffnen.\n");
    }
        while(fgets(puffer, BUF, f))
        strcat(puffer, file);
    
    char url[255], znummer[255], pfad[255], pword[255];
    if( 4==fscanf(f,"%254[^|]|%254[^|]|%254[^|]|%254f",url,znummer,pfad,pword) ){
      puts("OK");
    }
        else {
        puts("Fehler"); 
    }
    

    Bin für jede Kritik offen 🙂 Wie gesagt, gibt vieles das ich bisher nicht kenne 🙂



  • Funktioniert das? Wahrscheinlich nicht, weil die fgets-Schleife die ganze Datei liest, so dass später bei dem fscanf()-Aufruf nichts mehr zu lesen ist. Überhaupt ist diese fgets-Schleife sehr seltsam, auch wenn sie funktionieren würde, weil man die Datei auch auf einen Satz einlesen kann.

    Wenn du die Datei eigens in einen String einliest, musst du natürlich wiederum sscanf() und diesen String verwenden.
    🙂



  • Ja, musst ich grade auch erkennen das es so nicht gehen kann.

    Wie funktionert das fscanf? Muss ich die datei dann schon mit fopen öffnen
    und dann scannen? oder wird diese direkt über den fscanf befehl eingelesen?

    ICh werd jetzt mal noch ein bisschen daran rumversuchen. Immerhin hab ich jetzt mal einen kleinen Anhaltspunkt wie das funktionieren kann.



  • bethebe schrieb:

    Wie funktionert das fscanf? Muss ich die datei dann schon mit fopen öffnen
    und dann scannen? oder wird diese direkt über den fscanf befehl eingelesen?

    man: fscanf ist wie man: sscanf, nur dass das erste Argument ein FILE* ist. Dieser FILE-Zeiger muss zu einer Datei gehören, die vorher geöffnet wurde, das hast du in Zeile 4 gemacht (und vergessen, das Programm zu beenden, wenn das Öffnen fehlschlägt). Am Ende musst du die Datei wieder schliessen, mit fclose(f) .
    🙂



  • Ahja...sind so kleine fehler die mir noch zu gerne passieren.
    Bin glaube ich, aber auf dem richtigen Weg.

    Danke für deine Hilfe, werde mich nochmal melden wenn ich es zum laufen gebracht habe oder garnicht mehr weiter komme ;).



  • bethebe schrieb:

    Danke für deine Hilfe

    Nur für meine?
    🙂



  • Ja, habe mich doch bei Wutz schon bedankt 🙂

    Aber egal, danke an euch beide, hat mir sehr geholfen. Ist alles noch etwas schwierig wenn man noch sehr wenig Kenntwnisse
    über die Funktionen von C hat, da ist man auf so nen Forum schon fast angewiesen 🙂



  • Nachdem wir jetzt Stringbearbeitung behandelt haben, folgt hier die Dateibearbeitung.

    FILE *f;
    char puffer[BUFSIZ];
    f=fopen("data.txt","rt");
    if(f == NULL) {
        printf("Fehler beim öffnen.\n");
    }
    while(fgets(puffer, BUFSIZ, f))
    {
      char url[255], znummer[255], pfad[255], pword[255];
      if( 4==sscanf(puffer,"%254[^|]|%254[^|]|%254[^|]|%254s",url,znummer,pfad,pword) )
        puts("OK");
      else
        puts("Fehler");
    }
    fclose(f);
    

    Ich weiß auch schon, welches Thema das nächste sein wird.



  • So, wenn ich das jetzt richtige verstehe, bzw. wenn das richtig läuft sollte meein Programm jetzt die strings erstellt haben.

    Allerdings kommt bei mir jetzt die frage auf wiese diese heißen oder wie prüfen kann ob diese auch richtig aus der Datei ausgelesen wurden.

    printf("%254",url);
    

    Oder wie kann ich damit jetzt weiterarbeiten?

    Achja, bei deinem Code @Wutz wird mir OK und Fehler ausgegeben.

    Schon fast bissel doof das ich soviel frag, aber leider hab ich bisher nicht das Wissen ob von alleine drauf zukommen.



  • Ausgeben eines Strings mit

    printf("%s",string);
    

    Wenn sowohl OK/Fehler ausgegeben wird hast du nicht richtig abgetippt.



  • EDIT:::Ok, hat sich erledigt habs hinbekommen.!!!

    Nur eine Frage hätte ich noch, ist es möglich die jetzt erhalten strings in eine Variable zu bekommen?

    ich nehm mal direkt das beispiel aus meinem Programm.

    /* Dieses Programm öffnet einen Browser und Tippt die Anmeldedaten
    in die Textfelder*/
    int i;
    char zollnummer[255]={"/*Da sollten die Strings rein */"};//Zollnummer
    char softzert[255]={""}; //Software-Zert.
    char pin[255]={""}; //PIN
    
    .....
    Sleep(3000);
    //Zollnummer eintragen
    for(i=0;i<strlen(zollnummer);i++)
    {
    keybd_event(VkKeyScan(zollnummer[i]),0,0,0);//Tastendruck
    keybd_event(VkKeyScan(zollnummer[i]),0,KEYEVENTF_KEYUP,0);//Loslassen
    

    Wenn ich bisher den String (z.b. URL) eingefügt habe, Tipp mein Programm einfach nur URL ins Textfeld. Allerdings sollte ja der Inhalt der txt Datei dor eingetragen werden.



  • bethebe schrieb:

    Ja, habe mich doch bei Wutz schon bedankt 🙂

    Na dann ists ja gut. 🙂

    bethebe schrieb:

    Jetzt die Frage, wie kann ich damit weiterarbeiten, die Daten sollen später in ein Formular übertragen werden.

    Hmm, wenn du deine Daten einmal in Strings aufgeteilt hast, musst du schon selbst wissen, was du damit anstellen willst. Wenn du die Strings ausserhalb der Schleife verwenden willst, musst du sie ausserhalb der Schleife definieren.
    🙂



  • Ja, habs auch hinbekomme, war grade am editieren meines Betrags, da kamst du mir etwas zuvor 🙂



  • bethebe schrieb:

    Nur eine Frage hätte ich noch, ist es möglich die jetzt erhalten strings in eine Variable zu bekommen?

    Naja, du kannst ein Array von 4 Zeigern auf Zeichen anlegen, und dort die vier Anfangs-Adressen hinlegen. Was hast du vor?

    Übrigens ist das sicher kein solider Entwurf, wenn er versucht, einen Browser fernzusteuern, nur um eine HTTP-Anfrage zu machen.
    🙂



  • Das Formular ist nen JavaApplet, hab also keine Möglichkeit dieses auszulesen oder mit irgendwelchen HTML sachen da was auszufüllen 😉

    Und da ich eh Übung in C brauche und es Ziemlich "cool" ist das mit nem eignen Programm zu machen, wird das von mir so gelöst 🙂

    edit.:

    Also Habs jetzt hinbekommen.
    So siehts aus:

    FILE *f;
    char puffer[BUFSIZ];
    f=fopen("data.txt","rt");
    if(f == NULL) {
        printf("Fehler beim öffnen.\n");
    }
      int i;
      char url[255], znummer[255], pfad[255], pword[255];
      if( 4==fscanf(f,"%254[^|]|%254[^|]|%254[^|]|%254s",url,znummer,pfad,pword) )
        puts("OK");
      else
        puts("Fehler");
    fclose(f);
    
    ShellExecute(NULL, "open", "/* Hier steht die URL*/", NULL, NULL, SW_SHOWNORMAL); //Login-Page öffnen
    Sleep(3000);
    //Zollnummer eintragen
    for(i=0;i<strlen(znummer);i++)
    {
    keybd_event(VkKeyScan(znummer[i]),0,0,0);//Tastendruck
    keybd_event(VkKeyScan(znummer[i]),0,KEYEVENTF_KEYUP,0);//Loslassen
    }
    

    Nur noch ein Problem, VkKeyScan gibt nur Kleinbuchstaben aus, bzw. gibt auch kein "/,:,;" also einfach also wozu schift oder sontiges gedrückt werden.

    Mal schauen wie ich das noch löse, oder hat wer ne Idee.

    Ach und noch ein ganz dickes Danke an euch. Hätte das sonst wohl dieses Jahr nicht mehr hinbekommen 🙂



  • bethebe schrieb:

    Nur noch ein Problem, VkKeyScan gibt nur Kleinbuchstaben aus, bzw. gibt auch kein "/,:,;" also einfach also wozu schift oder sontiges gedrückt werden.

    Solche Sachen würde ich in der Windows-Ecke nachfragen.
    🙂



  • Das ist ne gute Idee, obwohl ich auch schon ne Lösung gefunden hab, die aber extrem Umfachreich ist und mein Programm sehr unüberischtlich aussehen lässt.

    Vielleicht gibts ja noch ne andere Möglichkeit. Aber für heute reichts ertsmal.
    Schönen Feierband 🙂


Anmelden zum Antworten